1

可能重复:
jquery on vs click 方法

来自 API:

.on() :将一个或多个事件的事件处理函数附加到所选元素。

示例代码:

$("#dataTable tbody tr").on("click", function(event){
    alert($(this).text());
});

我们可以这样写:

$("#dataTable tbody tr").click(function() {
        alert($this).text();
});

为什么要麻烦将事件包装在 .on() 中?

谢谢。

4

4 回答 4

5

为什么要麻烦将事件包装在 .on() 中?

在这个特定的例子中,使用on()你可以利用event delegation, 所以你可以简单地做,而不是为每个tr元素附加很多处理程序

$("#dataTable").on("click", "tr", function(event){
    alert($(this).text());
});

此外,使用on()您可以将 a 分配namespace给您的事件,例如

$("#dataTable").on("click.mynamespace"...)

因此,您可以稍后以更清洁和更精致的方式分离您的事件,例如

$("#dataTable").off(".mynamespace"...);

whileclick(function()...)只是一种简写方法.on("click", function()...)

于 2012-05-30T08:44:09.037 回答
4

.click()主要是AND的区别.on()

您可以在.click()页面上的现有元素上绑定点击事件,但是例如刚刚通过 Ajax 添加的新元素呢,点击事件将不会绑定在新元素上

因此,使用.on()使您能够将新添加的元素上的单击事件绑定到页面

于 2012-05-30T08:48:36.077 回答
2

.on给你:

  1. 事件委托
  2. 为多个事件注册相同处理程序的能力
  3. 事件命名空间
  4. 一致的事件注册接口
  5. 与其他 JS 环境的一致性,例如node.js

我总是.on()优先使用 to .click(),以便在我想触发事件时保留后者。

于 2012-05-30T08:47:30.773 回答
2

恰恰相反:.click()是 . 的简写.on('click')。不将其包装在 .click 中会更快(并允许更多选项,例如事件委托)。

使用 .click 的唯一优点是:

  • 写起来更短
  • 它会在输入错误时引发运行时错误,而不是静默失败
于 2012-05-30T08:48:13.543 回答