4

我对何时应该使用事件委托而不是开箱即用的 JQuery 事件处理感到困惑。

我总是很想使用事件处理程序,因为它在 JQuery 中非常简单:

例如:

$("button#submit").click(function () { 
      $(this).css("disabled", "true");
    });

事件委托的编写实际上并没有那么复杂:

$("button#submit").live("click", function() {
      $(this).css("disabled", "true");
});

但它似乎并不那么直观。

是否有关于何时使用事件委托的简单经验法则?我想我真的不明白它的重点。

4

4 回答 4

3

当您将动态添加元素到需要分配该事件的页面时,请使用 .live()。(请注意 .live() 仅适用于选择器)

对所有其他情况使用 .click() (或任何其他事件)

于 2009-07-20T02:05:00.507 回答
2

您应该在以下情况下使用事件委托:

  • 当您想要跨多个元素处理相同的事件时,例如,如果您有一个包含许多行的数据表,使用委托将使用更少的内存并且比为每行注册一个事件处理程序更快。
  • 当页面加载后元素被动态添加到页面并且您想要处理这些新元素的事件时,例如向数据表添加行。

使用事件实用程序和事件委托来提高性能对此进行了更多讨论(即使本文使用了 YUI,这些想法仍然适用)。

于 2009-07-20T02:39:49.177 回答
1

据此,当有很多绑定元素时,一切都与速度有关

于 2009-07-20T02:10:19.640 回答
0

我发现我尽可能使用现场直播。这样,如果我稍后添加动态内容,我根本不需要更改代码。

于 2009-07-20T02:19:45.613 回答