【问题标题】:Other jquery functions NOT working after successful ajax function成功的ajax函数后其他jquery函数不起作用
【发布时间】: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 函数不再起作用,就像他们在页面上的其他评论后实例上所做的那样。

标签: php jquery ajax jquery-selectors


【解决方案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) 生成子代。

【讨论】:

  • 试过了,它仍然像以前一样工作,但仍然有同样的问题。
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 2014-12-17
  • 2013-04-21
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多