我有一个小部件,可以使用 ajax 动态插入网页并将其自己的 jquery 放入 header 中,一切正常。
但是当在该小部件中我粘贴一些额外的脚本来添加一些等待用户输入的动态添加的元素时,它们确实工作正常,但是使用小部件加载的元素最初只能与 .click()< 正确绑定(bind)
事件,而动态元素确实可以工作,但只是第一次出现一些非常奇怪的行为,例如多次触发点击(通过我对该点击进行的调用可以明显看出),然后完全不再工作,可能是什么这里的原因是其他网站的驻留脚本与我的脚本混淆还是其他原因?
我正在使用所有元素:
$( 'body' ).on('click', '.page_link', someFunction);
上面的方法不起作用,所以我尝试了这个,它可以按预期与小部件中预加载的元素一起工作,但对于动态添加的元素则效果不佳:
$( '.page_link' ).click(someFunction);
$( 'body' ).on('click', '.page_link', someFunction);
感谢任何帮助,谢谢。
最佳答案
对于jquery中动态加载的元素,需要重新应用事件(点击)
从 jQuery 1.7 开始,您可以使用 jQuery.fn.on:
$(parentSelector).on(eventName, dynamicChild, function() {});
$(parentSelector) 必须是非动态元素
您可以使用 body
或附加动态元素的父元素
在 jquery 1.7 之前,您可以使用 was 来使用 live():
$(selector).live( eventName, function(){} );
关于javascript - jQuery .on click 仅在第一次适用于动态元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571115/