将事件与document.on()
绑定是否被视为不良做法?
我认为将事件直接绑定到dom元素会更有效率。
我问,因为我正在试图弄清楚如何实现一些Javascript功能,如果效率低下,我想避免广泛使用document.on()
。
答案 0 :(得分:3)
通常不建议绑定绑定到文档或正文对象的委托方法,因为它可能会导致性能问题。问题是如果你得到许多委托事件都绑定到同一个对象,那么每次事件发生并且它冒泡到这个对象时,jQuery必须将原始选择器与许多不同的选择器进行比较,以查看哪个处理程序调用
将委托事件绑定到尽可能接近实际目标对象的父对象要好得多。
答案 1 :(得分:2)
如果可能的话,我会避免它。你必须意识到几乎每个事件都会冒泡到顶端。然后jQuery必须用你的选择器查询目标;这种方式绑定的每个事件可能都是不同的。这可以加起来。
我个人遇到了遗留代码,这些代码大量使用了现已消失的函数.live()
。从this answer可以看出,这相当于绑定到document
。
由于这个原因,我们最终在点击事件上遇到了多次第二次延迟。在修复了不必要的live()
绑定之后,因为它们导致了一些模糊的错误,我们最终提高了可用性。
您也无法在此时禁止事件,因为可能已经发生了默认操作。如果可以的话,你应该更具体地绑定。而且很有可能,你可以。