谁能告诉我这两种扩展功能有什么区别?谢谢。
$.fn.alertWhileClick= function() {
alert($(this).val());
}
$.fn.extend({
alertWhileClick:function(){
alert($(this).val());
}
});
谁能告诉我这两种扩展功能有什么区别?谢谢。
$.fn.alertWhileClick= function() {
alert($(this).val());
}
$.fn.extend({
alertWhileClick:function(){
alert($(this).val());
}
});
这两种形式是等价的。第一个通过赋值向 jQuery 的原型添加一个方法,第二个通过调用 来实现,这与$.extend()$.fn.extend()
方法相同。
该文档实际上在这里有点误导,因为它说:
如果仅向 提供一个参数
$.extend()
,则意味着省略了目标参数。在这种情况下,jQuery 对象本身被假定为目标。
但实际发生的情况更像是:
如果仅向 提供一个参数
$.extend()
,则意味着省略了目标参数。在这种情况下,应用对象$.extend()
(即this
方法内绑定的对象)被假定为目标。
因此,$.extend()
使用单个参数$
调用 extends ,并$.fn.extend()
使用单个参数调用 extends $.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;
}
// [...]
};