我是否正确理解jQuery委托函数



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

此外,对于这个特定的场景,这与.live()相比如何?

简短回答:

长答案:从jQuery 1.7+.on()开始,在您提到的这两个之前,它们是首选的,不推荐使用。这是.on():上的一个示例

    $('#parent').on("click", "span.children", function() {
        if ( confirm("Are you sure?") ) {
            console.log(this);
        }
    }); 

是的,你可以这样做,但你可以使用.on方法,不要使用.live,这是不推荐的。

$(elements).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(elements).on(events, selector, data, handler);        // jQuery 1.7+

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

此外,live()总是将事件处理程序附加到(文档的顶部),而delegate()允许您选择将事件附加到哪里,因此,如果您事先知道元素将在哪里,它会更高效。

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

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

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

基本上,您使用.on().delegate()所做的是向容器中的元素添加事件处理程序,无论这些元素是否已经存在,或者是否已动态添加到DOM中。

相关内容

  • 没有找到相关文章

最新更新