我在我的网站上动态生成按钮。要检测click
这些元素的状态,我相信您需要使用 jQuery 的on()
. 我尝试了以下方法,但似乎不起作用。难道我做错了什么?
$('.press').on('click', function() {
alert('clicked'); //Does not trigger on dynamic elements
});
当您查看我的JSFiddle时,请注意单击动态生成的按钮不会产生结果。
当您想委托事件处理时,选择器会继续包含动态元素的元素(一直到document
),第二个参数.on
是选择器:请参阅文档
$(document).on('click', '.press', function () { ...
我建议在使用委托时尝试使用尽可能具体的选择器,以便需要最少的遍历。不过,它通常不会产生太大的影响。
对于动态生成的元素,您需要使用事件委托。.on() 需要应用于父元素才能进行委托
委托活动
$('body').on('click','.press', function() {
alert('clicked'); // now it triggers on dynamic elements
});
你可以用static parent container
..替换身体
not available in the DOM
当您附加事件时,您的方法将不起作用,因为元素仍然存在。
它应该是
$(document).on('click', ".press", function() {
alert('clicked');
});
$('.press')
查找当前文档中的所有元素并将事件绑定到它们上,因此它不适用于您稍后添加的元素,因为它们在被选择时不存在。
$(document)
选择document
始终存在于任何地方和任何地方的 ,并将事件绑定到它。然后它过滤.press
,以便只有匹配.press
的元素才会真正调用回调。
请注意,您应该选择一个父元素,它是元素的共同父.press
元素并且当时存在,而不是使用document
.