关于jquery源的简单,混淆了“this”关键字

时间:2013-01-30 09:47:41

标签: javascript jquery this

我对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".
}

2 个答案:

答案 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');

你知道,链接方法可以帮助我们更快更好地编写代码。

如果您想进一步研究:http://en.wikipedia.org/wiki/Method_chaining