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

njr*_*101 5 jquery

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

$("#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)

Ror*_*san 4

就我个人而言,我会使用on()jQuery 1.7+ 中的所有事件绑定。

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

另外,正如您所说,click()(和其他事件快捷方式)无论如何都会由 jQuery 转换on("event", function() { ... });,因此它节省了过程中的一个步骤 - 当然这并不是一个明显的区别。

最后,on("click")我认为读起来更好。

  • 在 1.7+ 中,`click()` 被转换为 `on()`。我猜他们还没有更新文档。 (2认同)