假设我只想将一个简单的点击处理程序附加到一个元素,我总是这样做:
$("#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}}
答案 0 :(得分:4)
我个人会将on()
用于jQuery 1.7 +的所有事件绑定。
这意味着动态添加的元素与页面加载时可用的元素之间没有歧义。
另外,正如您所说的那样,click()
(以及其他事件快捷方式)无论如何都会被jQuery转换为on("event", function() { ... });
,因此它可以节省一个步骤 - 当然这不会产生显着的差异
最后,on("click")
在我看来读得更好。