我知道 div 将出现在我的页面未来 DOM 中的某个时间点,并且我知道它的 id(它由 SharePoint javascript 生成) - 我是否可以使用jQuery 委托将事件处理程序附加到此 div 之前它存在于 DOM 中吗?
此外,在这种特定情况下,这与 .live() 相比如何?
我知道 div 将出现在我的页面未来 DOM 中的某个时间点,并且我知道它的 id(它由 SharePoint javascript 生成) - 我是否可以使用jQuery 委托将事件处理程序附加到此 div 之前它存在于 DOM 中吗?
此外,在这种特定情况下,这与 .live() 相比如何?
是的,你可以这样做,但你可以使用.on方法,而不是使用.live
,它已被弃用。
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(elements).on(events, selector, data, handler); // jQuery 1.7+
你应该使用.on()
. 而且你永远不应该使用.live()
.
对于三者之间的性能测试,请参见:http: //jsperf.com/jquery-live-vs-delegate-vs-on
除了已被弃用的事实之外,.live()
与其他两个相比,它也非常慢。
基本上,您正在使用.on()
或.delegate()
将事件处理程序添加到容器中的元素,无论元素已经存在还是动态添加到 DOM。
是的,你可以,但是这两种方法都已被on()
最新版本的 jQuery 所取代。
此外,live()
始终将事件处理程序附加到文档(顶部),同时delegate()
允许您选择附加事件的位置,因此如果您事先知道元素将在哪里,它会更有效。