live && delegate
最近开发的一个控件,利用live方法在某个"label"上绑定了一个事件。结果发现所有的label都有这个事件了,顺便研究了下live和delegate方法区别。
PS:使用jQuery版本是1.6.2
截取部分live方法实现代码如下:
jQuery.each(["live", "die"], function( i, name ) {
jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
var type, i = 0, match, namespaces, preType,
selector = origSelector || this.selector,
context = origSelector ? this : jQuery( this.context );
...
省略
...
}
})
delegate方法代码如下:
delegate: function( selector, types, data, fn ) {
return this.live( types, data, fn, selector );
}
"delegate"方法并没有重新实现live方法,而是传递“丰富”的参数调用live方法。