成功的ajax函数后,其他jquery函数无法正常工作

时间:2013-02-13 21:09:32

标签: php jquery ajax jquery-selectors

修改

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 SHOW ALL - 坍塌评论代码

<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在焦点上删除默认值文本 - 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函数来从我的页面的评论部分传输数据。该页面在每个用户帖子下都有此表单的实例。因此,此页面将包含X个帖子,每个帖子都有X条评论,例如社交网络。我的ajax请求完美地发送,接收和显示数据但是我有两个其他jquery函数调用内部元素,在ajax函数返回html后不再有效。所有其他没有被ajax函数操作的工作仍然没有。我已经检查并重新检查了ajax函数的响应html,它与标准的post-comment实例的html相同。

请告诉我您希望看到的内容或是否有疑问。

谢谢,我们非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

确保以不必存在元素的方式绑定jQuery函数。

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

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

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

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

答案 1 :(得分:0)

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

你有这个:

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); ,因此您无需打包表单...现在如何使用它等同于 $((表单))

不确定这是否能解决你的问题,但jQuery可能会因为你从$(这个)产生孩子而被挂起。