jQuery .on函数用于将来的元素,因为.live已被弃用

时间:2011-11-19 01:05:16

标签: jquery

我需要为未来click元素的<div>事件添加一个尚不存在的处理程序。通常情况下,我会使用jQuery的.live函数来处理这个问题,但现在它似乎已被弃用,而不是.on

要以这种方式使用.on方法,jQuery建议设置selector参数,以允许创建委托事件,并提供此示例代码:

$("#dataTable tbody").on("click", "tr", function(event){
    alert($(this).text());
});

这一切都很好,但是我为我的初始选择器添加了什么?#dataTable tbody?请注意,$.on()不起作用。

2 个答案:

答案 0 :(得分:270)

jQuery的文档显示你将替换

$(selector).live(event, handler) 

$(document).on(event, selector, handler)

此外,您可以选择更精确,并使用选择器替换$(document)元素的静态父级。例如,如果您有一个静态table元素并且tr元素被动态添加到DOM,那么您可以执行$('table#id').on('click', 'tr', ...)

之类的操作

http://api.jquery.com/live/

答案 1 :(得分:33)

我刚发布这个问题时就知道了......对不起!

初始选择器可以是任何父元素。由于我的元素将是身体的直接孩子,我可以使用body作为选择器:

$('body').on('click', '.my_class', function(event) { ...

这是有效的,因为事件将会冒泡。这基本上是正常的冒泡,有一个.my_class的额外过滤器。