jQuery 1.7:将事件快捷方式(例如click())转换为on()?

9

我刚发现 jQuery 1.7 引入了一个新的方法,on()。通过我的简要学习,我认为它是绑定事件的一种合并方式,而不是决定使用 bind()live()delegate() 中的哪一个。在我看来,这是一个真正美妙的增加,提供了众多的好处。但是我不确定是否需要转换事件快捷方式,例如 click()。根据官方文档,click() 的定义仍然是将 .bind('click', handler) 作为快捷方式。我认为,在 v1.7+ 中,重新定义 click() 和其他事件快捷方式以使用 on() 更有意义,不是吗?

2个回答

5
jQuery文档明确将.click()表示为.on("click")的速记方式,因此如果您愿意,可以替换所有先前的调用。 on()方法文档的摘录: 有一些事件的速记方法,例如.click(),可用于附加或触发事件处理程序。有关速记方法的完整列表,请参见事件类别。 .on()方法实际上与.bind()相同,只是您可以一次绑定多个事件,并选择一组实际触发此事件的子级。 除非需要绑定多个事件或使用过滤子级进行更多的棘手操作,否则我认为使用on()而不是click()没有更多意义。

1

ghusse是正确的,没有必要用.on()替换所有的.click()快捷方式,但你应该用.on()替换.live()代码,因为.live()已被标记为过时,可能会在jQuery 1.8中被删除...讨论正在进行中。

$('SELECTOR').live('click', function(e) { ... });

$('UPSELECTOR').on('click', 'SELECTOR', function(e) { ... });

UPSELECTOR 是与 SELECTOR 相同(那么您可以省略 .on() 的第二个参数)或表示 DOM 树中更高级别的元素(集),即事件冒泡时将被遍历的元素。这里常见的选择是 documentbody


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接