成功的ajax函数后其他jquery函数不起作用

Posted

技术标签:

【中文标题】成功的ajax函数后其他jquery函数不起作用【英文标题】:Other jquery functions NOT working after successful ajax function 【发布时间】:2013-01-29 13:37:57 【问题描述】:

编辑

JQUERY-AJAX 请求代码:

<script type="text/javascript">
$(document).ready(function()
$(".form").submit( function(e) 
    e.preventDefault();
    var form = $(this);
    var div_add_comment = $(form).parent();
    var div_comments = $(div_add_comment).parent();
    $.ajax(
        type: "POST",
        data: $(form).serialize(),
        url: "includes/comment.php",
        success: function(msg)
            $(div_comments).html(msg);
        
    );
    return false;
);
);
</script>

JQUERY 显示全部 - 折叠评论代码

<script type="text/javascript">
$(document).ready(function()
$('.see_all').click(function()
    var thisItem = $(this);
    thisItem.parent().find('#comment2').slideDown('fast');
    thisItem.parent().find('.collapse').css('display','inline-block');
    thisItem.css('display','none');
    return false;
); 

$('.collapse').click(function()
     var thisItem = $(this);
     thisItem.parent().find('#comment2').slideUp('fast');
     thisItem.css('display','none');
     thisItem.parent().find('.see_all').css('display','inline-block');
     return false;
)
)
</script>

JQUERY REMOVE DEFAULT VALUE TEXT ON FOCUS - TEXTAREA

<script type="text/javascript">
$(document).ready(function()
var Input = $('textarea[name=comment]');
var default_value = Input.val();

$(Input).focus(function() 
    if($(this).val() == default_value)
    
         $(this).val("");
    
).blur(function()
    if($(this).val().length == 0)
    
        $(this).val(default_value);
    
);
)
</script>

如果您需要其他任何内容,请告诉我,我有最宝贵的时间在这些帖子中复制代码并对其进行格式化。

结束编辑

我遇到了一个奇怪的小问题。我创建了一个 jquery-ajax 函数来从我页面的 cmets 部分传输数据。该页面在每个用户帖子下都有一个此表单的实例。所以这个页面会有 X 个帖子,每个帖子有 X 个 cmets,就像一个社交网络。我的 ajax 请求完美地发送、接收和显示数据但是我有另外两个调用内部元素的 jquery 函数,这些函数在 ajax 函数返回 html 后不再起作用。 ajax 函数未处理的所有其他函数仍然有效。我已经检查并重新检查了来自 ajax 函数的响应 html,它与标准 post-comment 实例的 html 相同。

如果您想看什么或有任何疑问,请告诉我。

谢谢,我们永远感谢您的帮助!

【问题讨论】:

听起来像是事件绑定问题 - 发布您的代码 好的 AlienWebguy,给我一点时间。 分享代码片段...我过去也遇到过类似的问题,但我无法判断您是否遇到同样的问题而没有看到一些代码。 你的标题在说什么? 好的,伙计们,在上面发布我的 jquery 代码,问题再次是在提交 ajax 请求后,用于删除 textarea 和 show-collapse cmets 功能的其他两个 jquery 函数不再起作用,就像他们在页面上的其他评论后实例上所做的那样。 【参考方案1】:

确保绑定 jQuery 函数,使元素不必存在。

$('ul').on('click', 'li', function() /* do something */ );

这将在函数绑定后添加的 LI 上执行。

在您的情况下,您可能希望绑定到 cmets 部分的父级并定位具有点击行为的元素。

$('.comments')
    .on('click', '.see_all', function()...)
    .on('click', '.collapse', function()...)
    .on('focus', 'textarea[name=comment]', function()...)
    .on('blur', 'textarea[name=comment]', function()...)

【讨论】:

我已经在上面发布了一些代码,你能详细说明你与我的编辑有关吗? 好的,我试试 ArrayKnight,这很有道理,我会告诉你的。 ArrayKnight,谢谢你的帮助,我得到了我需要的结果!我真的很感激人。检查是否已接受。【参考方案2】:

尝试从表单中删除 $()。

你有这个:

var form = $(this);
    var div_add_comment = $(form).parent();
    var div_comments = $(div_add_comment).parent();

应该是这样的:

var form = $(this),
    div_add_comment = form.parent(),
    div_comments = $(div_add_comment).parent();

既然你声明了 var form = $(this); 你就不需要换行了……你现在拥有它就相当于 $((form))

不确定这是否能解决您的问题,但 jQuery 可能会挂断此问题,因为您正在从 $(this) 生成子代。

【讨论】:

试过了,它仍然像以前一样工作,但仍然有同样的问题。

以上是关于成功的ajax函数后其他jquery函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery Ajax 后,Angular 函数突然不起作用

jquery ajax 不起作用 - 成功和错误 [关闭]

Ajax加载后按钮上的JQuery HTML onclick属性不起作用

通过 Ajax 更新 JSF 组件后,JavaScript/jQuery 事件侦听器不起作用

Ajax成功功能在jquery mobile中不起作用

ajax调用HTML内容更改后select2 jquery插件不起作用