我对jquery 1.7.3 source.some片段中的“this”关键字感到非常困惑,如下所示:
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
if ( !selector ) {
return this; //why not only one "return" here?
//And does "this" refer to jQuery object?
//OTOH, this question is about why it returns "this".
}
答案 0 :(得分:2)
返回此允许可链接的插件调用,
$(whatever).plugin1().plugin2() etc
如果您在插件中没有return this
,则无法将其链接起来
&安培;链接很快,&链接很酷
你想在你的jquery代码中尽可能多地链接
回答你的评论:你没有(内部插件定义):
if ($("#div1").get(0)) {
//do whatever to $("#div1")
}
return this;
return this
在插件定义结束时出现 无论在任何条件下都无需返回
答案 1 :(得分:1)
是的,这个是jquery对象并返回这个使你的函数可以链接。
// chaining
$("#person").slideDown('slow')
.addClass('grouped')
.css('margin-left', '11px');
// no chaining
$('#person').slideDown('slow');
$('#person').addClass('grouped');
$('#person').css('margin-left', '11px');
你知道,链接方法可以帮助我们更快更好地编写代码。