一尘不染

jQuery:live()与委托()

javascript

我在Web应用程序中使用jQuery。在阅读其文档时,我了解了live()delegate()。尽管他们解释了这两种方法,但我不了解它们之间的确切区别。也不确定哪种方法在哪种情况下是理想的。

请帮助我清楚地了解这些方法。

谢谢


阅读 294

收藏
2020-05-01

共1个答案

一尘不染

.live()要求您立即运行选择器,除非您使用的结果非常浪费。这里的事件处理程序是附加到的document,因此必须检查所有冒泡的该类型事件。这是一个用法示例:

$(".myClass").live("click", function() { alert("Hi"); });

请注意, 即使我们不在乎 该语句$(".myClass"),该选择符 也会 运行该选择器以查找该类中的所有元素,我们所 希望的
只是在事件冒泡时 稍后".myClass"匹配的字符串。 __click``document


.delegate()实际在.live()内部使用,但具有上下文。选择器
不会 立即运行,因此它已经更加高效了,并且没有附加到document(尽管可以)它更本地化了……而且您根本不在乎其他元素树中的所有 其他
事件甚至都不会冒泡时检查…再次提高效率。这是一个用法示例:

$("#myTable").delegate("td", "click", function() { alert("Hi"); });

现在这里发生了什么?我们跑了$("#myTable")去重视(当然不是越贵的元素document,但我们 使用
的结果。然后,我们重视的事件处理程序到(或那些在其他情况下)的元素,只有clicks 该元素是对检查"td"选择当它们发生时,并不是像
其他 任何地方 一样.live()(因为 所有内容 都在内部document)。

2020-05-01