我刚刚发现jQuery 1.7引入了一种新方法on()
。通过我的简短研究,我将其视为绑定事件的统一方式,而不是决定使用bind()
,live()
和delegate()
中的哪一个。 IMO,这是一个非常好的补充,提供了许多好处。但后来我不确定是否需要转换事件快捷方式,例如click()
。根据官方文档,click()
的定义仍是 .bind('click', handler)
的快捷方式。我认为jQuery开发人员更有意义的是重新定义v1.7 +中的click()和其他事件快捷方式以使用on(),不是吗?
答案 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) { ... });
UPSELECTOR
与SELECTOR
相同(那么你可以省略.on()
的第二个参数)或者它代表DOM中更高的(一组)元素树,即事件冒泡时将遍历的元素。这里常见的选择是document
或body