我知道在我的页面的未来DOM中会出现div,我知道它的ID(它是由SharePoint javascript生成的) - 是否可以使用jQuery delegate来附加事件在它存在于DOM之前的div的处理程序?
此外,这与特定场景的.live()相比如何?
答案 0 :(得分:3)
简短回答:是
答案很长:从jQuery 1.7 + .on()
开始,在你提到的两个之前,它们已经被弃用了。这是.on()
上的示例:
$('#parent').on("click", "span.children", function() {
if ( confirm("Are you sure?") ) {
console.log(this);
}
});
答案 1 :(得分:1)
是的,你可以这样做,但是你可以使用.on方法,而不使用.live
,不推荐使用它。
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(elements).on(events, selector, data, handler); // jQuery 1.7+
答案 2 :(得分:1)
您应该使用.on()
。你永远不应该使用.live()
。
对于三者之间的性能测试,请参阅:http://jsperf.com/jquery-live-vs-delegate-vs-on
除了.live()
被弃用之外,与其他两个相比它也很慢。
基本上,您使用.on()
或.delegate()
执行的操作是将事件处理程序添加到容器中的元素,无论元素是否已存在或是否已动态添加到DOM中。
答案 3 :(得分:1)
是,你可以,但是在最近的jQuery版本中,这两种方法都被取代了on()
。
此外,live()
始终将事件处理程序附加到(顶部)文档,而delegate()
允许您选择附加事件的位置,因此如果您之前知道它可以更有效把手放在哪里。