2

我知道 div 将出现在我的页面未来 DOM 中的某个时间点,并且我知道它的 id(它由 SharePoint javascript 生成) - 我是否可以使用jQuery 委托将事件处理程序附加到此 div 之前它存在于 DOM 中吗?

此外,在这种特定情况下,这与 .live() 相比如何?

4

4 回答 4

3

简短的回答:是的

长答案:.on()在您提到的两个之前,首选 jQuery 1.7+,它们已被弃用。这是一个例子.on()

    $('#parent').on("click", "span.children", function() {
        if ( confirm("Are you sure?") ) {
            console.log(this);
        }
    }); 
于 2012-08-22T09:17:59.170 回答
1

是的,你可以这样做,但你可以使用.on方法,而不是使用.live,它已被弃用。

$(elements).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(elements).on(events, selector, data, handler);        // jQuery 1.7+
于 2012-08-22T09:15:19.430 回答
1

你应该使用.on(). 而且你永远不应该使用.live().

对于三者之间的性能测试,请参见:http: //jsperf.com/jquery-live-vs-delegate-vs-on

除了已被弃用的事实之外,.live()与其他两个相比,它也非常慢。

基本上,您正在使用.on().delegate()将事件处理程序添加到容器中的元素,无论元素已经存在还是动态添加到 DOM。

于 2012-08-22T09:17:03.617 回答
1

的,你可以,但是这两种方法都已被on()最新版本的 jQuery 所取代。

此外,live()始终将事件处理程序附加到文档(顶部),同时delegate()允许您选择附加事件的位置,因此如果您事先知道元素将在哪里,它会更有效。

于 2012-08-22T09:17:16.500 回答