使用document.on()被认为是不好的做法吗?

时间:2013-12-19 13:47:00

标签: javascript jquery performance

将事件与document.on()绑定是否被视为不良做法?

我认为将事件直接绑定到dom元素会更有效率。

我问,因为我正在试图弄清楚如何实现一些Javascript功能,如果效率低下,我想避免广泛使用document.on()

2 个答案:

答案 0 :(得分:3)

通常不建议绑定绑定到文档或正文对象的委托方法,因为它可能会导致性能问题。问题是如果你得到许多委托事件都绑定到同一个对象,那么每次事件发生并且它冒泡到这个对象时,jQuery必须将原始选择器与许多不同的选择器进行比较,以查看哪个处理程序调用

将委托事件绑定到尽可能接近实际目标对象的父对象要好得多。

答案 1 :(得分:2)

如果可能的话,我会避免它。你必须意识到几乎每个事件都会冒泡到顶端。然后jQuery必须用你的选择器查询目标;这种方式绑定的每个事件可能都是不同的。这可以加起来。

我个人遇到了遗留代码,这些代码大量使用了现已消失的函数.live()。从this answer可以看出,这相当于绑定到document

由于这个原因,我们最终在点击事件上遇到了多次第二次延迟。在修复了不必要的live()绑定之后,因为它们导致了一些模糊的错误,我们最终提高了可用性。

您也无法在此时禁止事件,因为可能已经发生了默认操作。如果可以的话,你应该更具体地绑定。而且很有可能,你可以。