谁能告诉我这两种扩展功能有什么区别?感谢。
$.fn.alertWhileClick= function() {
alert($(this).val());
}
$.fn.extend({
alertWhileClick:function(){
alert($(this).val());
}
});
答案 0 :(得分:1)
这两种形式是等价的。第一个通过赋值为jQuery的原型添加一个方法,第二个通过调用$.fn.extend()
来实现,这与$.extend()的方法相同。
文档实际上有点误导,因为它说:
如果只向
$.extend()
提供了一个参数,则表示目标 参数被省略了。在这种情况下,jQuery对象本身就是 被认为是目标。
但实际发生的事情更像是:
如果只向
$.extend()
提供了一个参数,则表示目标 参数被省略了。在这种情况下,对象$.extend()
应用于(即方法中绑定到this
的对象)是 被认为是目标。
因此,使用单个参数调用$.extend()
扩展$
,并使用单个参数调用$.fn.extend()
扩展$.fn
。
源代码的相关部分说:
jQuery.extend = jQuery.fn.extend = function() {
// [...]
// extend jQuery itself if only one argument is passed
if ( length === i ) {
target = this; // Note: 'this', not 'jQuery'.
--i;
}
// [...]
};