我正在考虑使用live()
将事件处理程序绑定到我尚未插入DOM的函数。然而,这看起来很昂贵 - 必须在插入元素时或任何时候执行“click”元素时进行运行时检查,例如,查看是否应该调用处理程序。
在实践中这是值得担心的事情,还是现在Javascript如此之快以至于不值得关注?
live()
功能的参考页面:http://api.jquery.com/live/
答案 0 :(得分:6)
不,.live()
使用事件冒泡来做它的事情。它只是附加到根元素并对通过DOM树冒泡的事件做出反应。它不一直在检查DOM元素。
从您链接的页面:
.live()
方法能够通过使用事件委托来影响尚未添加到DOM的元素:绑定到祖先元素的处理程序负责在其后代上触发的事件。传递给.live()
的处理程序从不绑定到元素;相反,.live()
将一个特殊的处理程序绑定到DOM树的根目录。
在更详细的内容中继续阅读。
答案 1 :(得分:2)
最好不要使用delegate()
,它不会在文档上附加处理程序,而是在指定的父元素上附加。这意味着更少的负载。建议在大多数情况下使用它而不是.live()
。