Jquery 为什么类相关的onclick事件只触发一次?

Jquery 为什么类相关的onclick事件只触发一次?,jquery,Jquery,我已将此方法绑定到类的所有元素。删除\u filter。 首先我得到'data'属性,它包含该方法应该调用的url。然后我调用一个脚本,它不做任何其他事情,然后用一个典型的“等待…加载数据”div替换所有正在重新加载的div。它工作正常,但只有在调用一个之后,我可以随时点击其他链接,但什么都没有发生,这让我发疯,我已经非常生气了 $(".delete_filter").click(function() { url=$(this).attr('data'); $.getScri

我已将此方法绑定到类
的所有元素。删除\u filter
。 首先我得到'data'属性,它包含该方法应该调用的url。然后我调用一个脚本,它不做任何其他事情,然后用一个典型的“等待…加载数据”div替换所有正在重新加载的div。它工作正常,但只有在调用一个之后,我可以随时点击其他链接,但什么都没有发生,这让我发疯,我已经非常生气了

$(".delete_filter").click(function() {
     url=$(this).attr('data');
     $.getScript("http://blabla.com/ajax/wait/filters:info", function() {
          $.getScript(url);
     });
});     

失败在哪里?

当您将单击绑定应用于类元素时,您仅将其应用于在运行代码时具有该类的元素。这意味着,如果动态添加
.delete filter
类,则必须再次运行代码。

可能是由于jQuery缓存了请求/响应。每次单击时尝试更改url。试试这个

$(".delete_filter").click(function() {
     var url=$(this).attr('data');
     $.getScript("http://blabla.com/ajax/wait/filters:info?r=" + Math.random(), function() {
          $.getScript(url);
     });
});   

如果更改了DOM,则要更改的Div可能包含在单击事件中附加的元素

如果是这种情况,您应该在\
实时
\
委托
功能上使用

这些函数对于当前渲染的元素和稍后添加的动态元素“工作”相同

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+
打开
版本:

$("body").on("click", ".delete_filter", function(){
         url=$(this).attr('data');
         $.getScript("http://blabla.com/ajax/wait/filters:info", function() {
              $.getScript(url);
        });
    }); 

加载后,
$('.delete_filter')
元素是否被删除或添加到页面中?是,当调用click元素时,元素将被重新加载。我应该用另一种方法来解决这个问题,还是有办法在不重新加载整个页面的情况下重新加载javascript?@davidb,我不确定您的脚本是如何设置的,但如果您正在加载新元素,则需要再次执行代码来绑定它们的单击。@davidb,CAbbott是对的,我不知道jQuery的。on。遵循gdoron的回答不要建议使用
live
它已从jQuery 1.7+中删除,而是在
@ShankarSangoli上使用
。我写了一个表格,每个版本中使用什么。你为什么抱怨这不是抱怨,你的答案是正确的,但最好使用最新版本,因为它有大多数错误修复和优化代码。