所以我看着jQuery source,我发现了这个:
delegate: function( selector, types, data, fn ) {
return this.live( types, data, fn, selector );
},
所以.delegate()
函数几乎就是.live()
函数。 唯一的区别是参数的顺序!为什么jQuery人会做这样的事情?
答案 0 :(得分:2)
人们通常会忽略selector
上的live
参数,我敢打赌,大多数人甚至不知道选择器参数是否存在。
delegate()
可让您轻松访问selector
参数,该参数允许您将事件侦听器“范围”为整个dom的一个子集,从而提高性能。
在传递内联匿名函数后提供其他参数很尴尬。由于选择器参数非常有用,因此jquery创建更方便的表单是有意义的。
请参阅: http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/
答案 1 :(得分:1)
它们完全相同,除了:
.delegate()
可让您缩小某个元素的事件处理范围,
而.live()必须处理整个页面中的事件,因为`live会在文档级别附加事件处理程序。.live()
利用从元素冒泡的事件,直到文档中delegate
停止在应用了delegate
的元素上。delegate
与live
相比,您可以很好地控制事件处理答案 2 :(得分:0)
https://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/总结了掌握基本理念的一般答案:
jQuery团队在v1.7中宣布了一种用于绑定事件的新方法。此方法结合了下面描述的live,bind和delegate的功能,允许您根据传递的参数指定绑定方法,而不是使用不同的函数名称。