我需要为未来click
元素的<div>
事件添加一个尚不存在的处理程序。通常情况下,我会使用jQuery的.live
函数来处理这个问题,但现在它似乎已被弃用,而不是.on
。
要以这种方式使用.on
方法,jQuery建议设置selector参数,以允许创建委托事件,并提供此示例代码:
$("#dataTable tbody").on("click", "tr", function(event){
alert($(this).text());
});
这一切都很好,但是我为我的初始选择器添加了什么?#dataTable tbody
?请注意,$.on()
不起作用。
答案 0 :(得分:270)
jQuery的文档显示你将替换
$(selector).live(event, handler)
带
$(document).on(event, selector, handler)
此外,您可以选择更精确,并使用选择器替换$(document)
元素的静态父级。例如,如果您有一个静态table
元素并且tr
元素被动态添加到DOM,那么您可以执行$('table#id').on('click', 'tr', ...)
答案 1 :(得分:33)
我刚发布这个问题时就知道了......对不起!
初始选择器可以是任何父元素。由于我的元素将是身体的直接孩子,我可以使用body
作为选择器:
$('body').on('click', '.my_class', function(event) { ...
这是有效的,因为事件将会冒泡。这基本上是正常的冒泡,有一个.my_class
的额外过滤器。