假设我只想将一个简单的点击处理程序附加到一个元素,我总是这样做:
$("#mydiv").click(function() { ... });
Run Code Online (Sandbox Code Playgroud)
看看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")?
基本上,我的问题是这个...今天编写JQuery代码时,我应该使用:
Variant 1: $("#mydiv").click(function() { ... });
Run Code Online (Sandbox Code Playgroud)
要么:
Variant 2: $("#mydiv").on("click", function() { ... });
Run Code Online (Sandbox Code Playgroud)
?
就我个人而言,我会使用on()jQuery 1.7+ 中的所有事件绑定。
这意味着动态添加的元素与页面加载时可用的元素之间没有歧义。
另外,正如您所说,click()(和其他事件快捷方式)无论如何都会由 jQuery 转换on("event", function() { ... });,因此它节省了过程中的一个步骤 - 当然这并不是一个明显的区别。
最后,on("click")我认为读起来更好。