我已经将此方法绑定到类.delete_filter的所有元素上。
首先,我获得了'data'属性,其中包含应由方法调用的url。然后,我调用一个脚本,它不执行其他任何操作,然后将一个要重新加载的所有div替换为典型的“等待...正在加载数据” div。它可以正常工作,但是只有一次,我可以随意点击其他链接,而没有任何反应,这让我发疯,我已经很生气了!

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


失败在哪里?

最佳答案

您更改了DOM,您要更改的Div可能包含为您添加了click事件的元素。

如果是这种情况,则应使用on \ live \ delegate函数。
这些功能对于当前渲染的元素和以后动态添加的元素将“起作用”。

$(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+


on版本:

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

关于jquery - 为什么类相关的onclick事件仅触发一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8979485/

10-11 05:53