2009-12-14 64 views
2

如果我延長了jQuery fn(如$ .fn.extend)我寫我的插件:

(function($){ 
    $.fn.extend({ 
     functionName : function(){ 
      //function returns 
      return this.each(function(){ 
        $(this).append("<div>text</div>"); 
      }); 
     } 
    }); 
})(jQuery); 

時,我想擴展jQuery的命名空間我寫這樣的:

(function($){ 
    $.extend({ 
     functionName : function(){ 
      //function returns 

     } 
    }); 
})(jQuery); 

什麼,我不知道是怎麼寫的在這種情況下

回答

2

UPDATE

當你正在做的,涉及多個選擇多個操作,你必須決定是什麼讓最感。如果一個選擇是主要焦點,但影響的其他項目中,也寫這樣一個插件,並返回主結果集是這樣的:

$.fn.myAction = function(secondarySelector){ 
     return this.each(function(){ 
      $(this).css('display', 'block'); 
      $(secondarySelector).hide(); 
     }); 
}; 

// Use: 
// $(primarySelector).myAction(secondarySelector); 
$("#id").myAction(".address"); // Chain continues after action 

如果選擇都同等重要,那麼只需創建一個函數不返回任何內容或返回true/false取決於成功。

的另一種方式來構造的代碼:

的延伸方法在其他OOP框架被使用和作爲已示出,可以使用jQuery被使用。然而,你會發現許多jQuery開發者選擇了這樣的更短的更明顯的語法:

(function($){ 

    // The if statement allows the file to be used with 
    // other files that use the same shared namespace 
    if(!$.Namespace){ 
     $.Namespace = { }; 
    }; 

    $.Namespace.Constructor = function(params){ 
     ... code ... 
    }; 

    // And for the wrapper sets ($.fn): 
    $.fn.functionName = function(opts){ 
     return this.each(function(){ 
      ... code ... 
     }); 
    }; 

})(jQuery); 
+0

所以爲了我想要做的事情,我不需要「返回」關鍵字了嗎?(就像return this.each()) – kmunky 2009-12-14 01:14:08

+0

@kmunky我加了一個答案來解決這個問題。它對你的特殊需求有意義嗎? – 2009-12-14 01:17:27

+0

pff ..很難說。我認爲我的問題不是這個問題。我會提出一個新問題,感謝這個偉大的職位 – kmunky 2009-12-14 01:40:09

2

您可以返回無論你在二審喜歡「回報」。例如可以考慮$.each()$.get()。但是,如果我是你,我會避免使用它作爲函數命名空間 - 它可能導致污染。相反,你shoudl保留此爲jQuery的命名空間像下添加自己的命名空間:

(function($){ 
    $.extend({ 
     myNamspace : { 
      functionName: function(){ 
      // return whatever 
      } 
     } 
    }}); 
})(jQuery); 
+0

好的,但我感興趣的是'返回任何';我該怎麼寫呢?如果我想只返回一行像'返回$(選擇器).append(...)'它就像這樣......但我應該如何寫它,如果我想返回多個'行動'像'$( selectorOne).appned(); $(slectorTwo)一個.remove();」 – kmunky 2009-12-14 01:05:44

+0

然後返回一個數組,對象或jquery節點列表。但是要返回什麼取決於你希望你的函數返回。 – prodigitalson 2009-12-14 02:01:51