jQuery .on click仅适用于动态元素的第一次

时间:2017-03-03 05:08:48

标签: javascript jquery html ajax

我有一个小部件,它使用ajax动态插入到网页中,并在标题中放置自己的jquery,一切正常。

但是当在那个小部件中我粘贴一些额外的脚本来添加一些等待用户输入的动态添加元素时,它们确实可以正常工作,但是最初加载了小部件的元素只能通过.click()事件正确绑定,而动态元素确实有效,但只是第一次有一些非常奇怪的行为,比如多次触发点击(通过我点击的电话很明显)然后完全没有再次工作,这可能是这里的原因,是居民其他网站的脚本搞乱我的脚本或者是别的什么?

我正在使用所有元素:

$( 'body' ).on('click', '.page_link', someFunction);

上面没有工作所以我尝试了这个,它按预期工作,预装了小部件,但没有动态添加的元素:

$( '.page_link' ).click(someFunction);
$( 'body' ).on('click', '.page_link', someFunction);

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

对于jquery中动态加载的元素,您需要重新应用事件(单击)

从jQuery 1.7开始,你可以使用jQuery.fn.on:

$(parentSelector).on(eventName, dynamicChild, function() {});

$(parentSelector)必须是非动态元素 您可以使用body或附加动态元素的父元素

在jquery 1.7之前,您可以使用was来使用live():

$(selector).live( eventName, function(){} );

答案 1 :(得分:0)

您必须使用document global变量来绑定click事件。尝试使用以下代码:

$( document ).on('click', '.page_link', someFunction);