我已经将此方法绑定到类.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/