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

时间:2011-11-30 10:14:16

标签: jquery jquery-1.7

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

2 个答案:

答案 0 :(得分:5)

jQuery文档清楚地将.click()显示为.on("click")的简写,所以如果您愿意,我猜您可以替换以前的所有通话。

on()方法文档的摘录:

  

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

方法.on()实际上与.bind()相同,只是您可以同时绑定多个事件,并选择一组实际触发此事件的子项。< / p>

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

答案 1 :(得分:1)

ghusse是对的,没有必要用.on()替换你所有的.click()快捷方式,但你应该用.on()替换你的.live()代码,因为.live()被标记为不推荐使用,也可以使用jQuery 1.8删除...讨论正在进行中。

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

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

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