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上使用。我写了一个表格,每个版本中使用什么。你为什么抱怨这不是抱怨,你的答案是正确的,但最好使用最新版本,因为它有大多数错误修复和优化代码。