.delegate()和.live()之间的区别

时间:2011-09-04 23:51:18

标签: jquery

所以我看着jQuery source,我发现了这个:

delegate: function( selector, types, data, fn ) {
    return this.live( types, data, fn, selector );
},

所以.delegate()函数几乎就是.live()函数。 唯一的区别是参数的顺序!为什么jQuery人会做这样的事情?

3 个答案:

答案 0 :(得分:2)

人们通常会忽略selector上的live参数,我敢打赌,大多数人甚至不知道选择器参数是否存在。

delegate()可让您轻松访问selector参数,该参数允许您将事件侦听器“范围”为整个dom的一个子集,从而提高性能。

在传递内联匿名函数后提供其他参数很尴尬。由于选择器参数非常有用,因此jquery创建更方便的表单是有意义的。

请参阅: http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

答案 1 :(得分:1)

它们完全相同,除了:

  1. .delegate()可让您缩小某个元素的事件处理范围, 而.live()必须处理整个页面中的事件,因为`live会在文档级别附加事件处理程序。
  2. .live()利用从元素冒泡的事件,直到文档中delegate停止在应用了delegate的元素上。
  3. 使用delegatelive相比,您可以很好地控制事件处理

答案 2 :(得分:0)

https://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/总结了掌握基本理念的一般答案:

  

jQuery团队在v1.7中宣布了一种用于绑定事件的新方法。此方法结合了下面描述的live,bind和delegate的功能,允许您根据传递的参数指定绑定方法,而不是使用不同的函数名称。