我应该使用.on()或.click()来附加事件处理程序吗?

时间:2011-12-09 11:48:30

标签: jquery

假设我只想将一个简单的点击处理程序附加到一个元素,我总是这样做:

$("#mydiv").click(function() { ... });

查看JQuery文档,似乎.on()是附加事件处理程序并替换.bind().delegate().live()的“推荐”方式:

  

从jQuery 1.7开始,.on()方法提供了所需的所有功能   用于附加事件处理程序。有关从旧的jQuery转换的帮助   事件方法,请参阅.bind(),. delegate()和.live()。

.click()的文档中,它说:

  

此方法是前两个版本中.bind('click',handler)的快捷方式,第三个是.trigger('click')。

因此,这意味着.click()正在使用.bind(),而.on()会弃用.click(),对吧?或者.on("click")会留下什么含义,但它会在某种程度上成为Variant 1: $("#mydiv").click(function() { ... }); 的捷径?

基本上,我的问题是......今天编写JQuery代码时,我应该使用:

Variant 2: $("#mydiv").on("click", function() { ... });

或:

{{1}}

1 个答案:

答案 0 :(得分:4)

我个人会将on()用于jQuery 1.7 +的所有事件绑定。

这意味着动态添加的元素与页面加载时可用的元素之间没有歧义。

另外,正如您所说的那样,click()(以及其他事件快捷方式)无论如何都会被jQuery转换为on("event", function() { ... });,因此它可以节省一个步骤 - 当然这不会产生显着的差异

最后,on("click")在我看来读得更好。