ajax调用后,Jquery不工作

jquery not working after ajax call?

本文关键字:工作 Jquery 调用 ajax      更新时间:2023-09-26

第一篇。最近我花了很多时间学习JavaScript。我一直在使用jQuery库,我刚刚了解到ajax调用将无法在页面的动态加载部分工作(没有刷新)。当然,我也需要这些帖子的ajax功能。我需要帮助了解解决这个烦恼的最佳方法。

是的,我已经阅读并看到了jQuery FAQ中所说的内容,但对我来说它是模糊的,没有信息,但确实提供了一些基本信息:http://docs.jquery.com/Frequently_Asked_Questions Why_do_my_events_stop_working_after_an_AJAX_request.3F

具体来说,我正在制作一个用户个人资料页面,类似于facebook个人资料页面的概念。用户向其他用户发布评论,新的评论将使用jQuery的ajax功能自动加载到页面上。每个评论都有按钮,如"删除","喜欢","回复"等,这些按钮与ajax一起工作得很好,但对于自动加载到页面上的评论,它们根本不起作用。

我发现了delegate()方法,我理解这就是为什么有些人会跳过这个。到目前为止,我的代码中只有这样:

$(document).delegate('img', 'click', function(){
alert('test'); //Stub
});

这工作,但问题是我已经有jQuery方法,我写的处理每一个我的ajax调用。我不知道如何使用委托来调用我已经编写的jQuery代码块。这可能吗?例如,这将在用户点击"回复"按钮的评论下面加载一个评论框:

$('img.wallpost_reply').click(function(){
$(this).closest('div.wallpost').find('div.wallreply').slideDown('fast'); //Toggle the window 
$(this).closest('div.wallpost').find('textarea.wallpost_input').focus(); //Focus on the textarea
});

^^这是一个非常简单的代码块,工作完美,类似于许多其他小块的代码,我有。当用户点击"Reply"图片时,这个函数会被调用,如下所示:

<img class="wallpost_reply" style="cursor:pointer;" src="./images/reply.png" alt="Reply" />

我如何分配delegate()与我已经写的jQuery代码链接??这可能吗?如果可能的话,我宁愿不编写具有相同功能的全新函数。

对于任何将通过ajax绑定到DOM或在运行时添加的元素,必须使用

http://api.jquery.com/live/

或正在使用的委托。

http://api.jquery.com/delegate/

这些将在文档级别绑定

下面是一个普通函数和一个"活动"函数的例子。live函数仍然可以处理通过AJAX调用插入的HTML。顺便说一下,代码只允许在输入框中输入数字。

常规:

$('input[class="number"]').keyup(function(e)
{
if (/[^0-9'.]/g.test(this.value))
{
    // Filter non-digits from input value.
    this.value = this.value.replace(/[^0-9'.]/g, '');
}
});

生活:

$('input[class="number"]').live('keyup', function (e) {
   if (/[^0-9'.]/g.test(this.value))
{
    // Filter non-digits from input value.
    this.value = this.value.replace(/[^0-9'.]/g, '');
}
});