代码之家  ›  专栏  ›  技术社区  ›  Teja Kantamneni

jQuery live()和liveQuery插件之间的区别是什么?

  •  5
  • Teja Kantamneni  · 技术社区  · 16 年前

    问题说明了一切。哪一个更好,什么时候使用,我从来没有使用过jQuery live(),因为我使用liveQuery插件已经有几年了,我已经习惯了,而且还在继续使用它。但我想知道两者之间的细微差别,以及何时使用它们?

    4 回复  |  直到 16 年前
        1
  •  5
  •   Pointy    9 年前

    在我看来,你最好使用“实时”功能 可能的话 ,因为它涉及较少的DOM遍历等。例如,使用liveQuery将事件处理程序与整个大表中的内容挂钩可能有点慢,但使用“live”则不会慢。虽然jQuery1.4大大改进了“live”,但有时可能会有一些问题(当然是IE)迫使您使用liveQuery。

    编辑 — 更新:2017年9月

    此时,jQuery的现代版本将事件处理程序注册集中在 .on()

    $(selector).live("event-name", handler);
    

    今天会用英语写吗 .on() :

    $(document).on("event-name", selector, handler);
    

    .on() API提供了比长期不推荐使用的API更大的灵活性 .live() .delegate() 确实如此)。

        2
  •  3
  •   Community Mohan Dere    9 年前

    Pointy said , live() 利用DOM中事件的冒泡(事件委派)。 $(selector).live(type, handler) 调用,jQuery仅调用 handler 上 $(event.target).closest(selector) 元素-即事件目标的最近匹配祖先或自身元素。 当然, 活的 livequery( matchedFn, unmatchedFn ) .

    • $(selector).live() 仍然需要遍历DOM(显然)。
    • 活的 配置时工作更少-它不必将处理程序附加到每个匹配的元素
    • 活的 在处理事件方面做了更多的工作-它必须遍历事件目标的祖先,找到与选择器匹配的元素
    • $("div").live() 不同于 $("div").livequery() 因为它只适用于最近的 div
    • 同样地, $("div, p").live() 不同于 $("div").live(); $("p").live();
        3
  •  1
  •   Fitzchak Yitzchaki    16 年前

    liveQuery插件最初是创建的,然后迁移到jQuery本身。

        4
  •  0
  •   Jaime Montoya    9 年前

    其中一个区别是.live()是jQuery的本机语言( http://api.jquery.com/live/ )livequery()是一个插件。正如你在 http://api.jquery.com/live/ ,.live()在jQuery 1.7中被弃用,并在版本1.9中被删除。