在JQuery中何时使用事件委托与事件处理有经验吗?

时间:2009-07-20 02:01:21

标签: javascript jquery event-delegation

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

我总是想要使用事件处理程序,因为它在JQuery中非常容易:

例如:

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

事件委托的编写并不是那么复杂:

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

但它似乎并不直观。

关于何时使用事件委托有一个简单的经验法则吗?我想我真的不明白它的意义。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

Using Event Utility and Event Delegation to Improve Performance更多地讨论了这一点(即使文章使用YUI,这些想法仍然适用)。

答案 2 :(得分:1)

根据this,当存在大量绑定元素时,它就是速度。

答案 3 :(得分:0)

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