【问题标题】:Performance difference between jQuery's .live('click', fn) and .click(fn)jQuery 的 .live('click', fn) 和 .click(fn) 之间的性能差异
【发布时间】:2009-09-02 14:55:48
【问题描述】:

我喜欢 jQuery 1.3 中的新直播活动。我的问题是这个事件的表现。我知道使用 live 优于 click/bind('click') 的优势,但是使用它而不是 click/bind('click') 会影响性能吗?

如果不是,为什么要使用 click 或 bind('click')?

【问题讨论】:

  • 我认为它们是不同的问题,因为这个问题仅与性能差异有关,而不是一般情况。
  • @MacAnthony:阅读该问题的公认答案,它深入研究了livebind 的性能特征。这就是我复制这个的原因:它已经被回答了。
  • 酷,感谢您的链接。之前搜索的时候好像没找到。

标签: javascript jquery events


【解决方案1】:

如果不是,你为什么要使用 click 还是绑定('click')?

因为$.live() 有一些明显的缺点

  • 现场活动不会以传统方式冒泡,不能 停止使用 stopPropagation (这在 jquery 1.4.4 中发生了变化) 或 停止立即传播。例如, 以两个点击事件为例 - 一个绑定到“li”,另一个绑定到“li a”。 如果内部发生点击 将触发两个事件。 这是因为当一个 $("li").bind("点击", fn);被束缚 你实际上是在说“每当一个 LI 元素上发生单击事件 - 或在 LI 元素内 - 触发此 点击事件。” 进一步停止 处理现场事件,fn 必须 返回 false。
  • 实时事件目前仅在用于选择器时才有效。为了 例如,这会起作用:$("li a").live(...) 但这不会: $("a", someElement).live(...) 和 这也不会: $("a").parent().live(...)。

【讨论】:

  • .live() 也无法捕获某些事件
  • live() 从 1.4.4 开始支持 stopProgation
  • @Kevin 请记住,在我写这篇文章的时候,这个问题和答案都已经三年多了。
【解决方案2】:

this

至于为什么你会使用点击或绑定而不是实时,答案是因为你不需要额外的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多