0

我对 jquery 1.7.3 source 中的“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".
}
4

2 回答 2

2

返回这允许可链接的插件调用,

$(whatever).plugin1().plugin2() etc

如果你不在return this插件中,你将无法链接它&链接速度很快,&链接很酷你想在你的 jquery 代码中尽可能多地链接

回答您的评论:不(在插件定义中):

if ($("#div1").get(0)) {
   //do whatever to $("#div1")
   }
return this;

return this出现在插件定义的末尾,无需在任何情况下返回它

于 2013-01-30T09:59:25.067 回答
1

是的,是 jquery 对象并返回this使您的函数可链接。

// 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

于 2013-01-30T10:01:59.453 回答