9

我刚刚发现 jQuery 1.7 引入了一个新方法,on(). 通过我的简短研究,我将其视为绑定事件的一种综合方式,而不是决定使用 、 和 中的bind()live()一个delegate()。IMO,这是一个非常好的补充,提供了许多好处。但是我不确定是否需要转换事件快捷方式,例如click(). 根据官方文档,定义click()仍然.bind('click', handler). 我认为 jQuery 开发人员在 v1.7+ 中重新定义 click() 和其他事件快捷方式以使用 on() 会更有意义,不是吗?

4

2 回答 2

5

jQuery 文档清楚地表示.click()为 的简写.on("click"),所以我想您可以根据需要替换所有以前的调用。

on()方法文档摘录:

有一些事件的速记方法,例如 .click()可用于附加或触发事件处理程序。有关速记方法的完整列表,请参阅事件类别。

除了您可以一次绑定多个事件并选择一组实际触发此事件的子事件之外,该方法.on()实际上与其他方法相同。.bind()

我认为使用on()而不是更有意义,click()除非您需要绑定多个事件或通过过滤子项做一些更棘手的事情。

于 2011-11-30T10:40:08.347 回答
1

ghusse 是对的,不需要用 .on() 替换所有 .click() 快捷方式,但应该用 .on() 替换 .live() 代码,因为 .live() 被标记为已弃用并且可能也将被 jQuery 1.8 删除...讨论正在进行中。

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

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

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

于 2011-11-30T12:56:44.037 回答