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);

私が知らないのは、この場合の「リターン」の書き方です

4

2 に答える 2

2

2番目のインスタンスでは好きなものを返すことができます。$.each()たとえば、対について考えて$.get()ください。ただし、もし私があなたなら、これを関数名義として使用することは避けます-汚染につながる可能性があります。代わりに、次のようにjquery名前空間の下に独自の名前空間を追加するためにこれを予約する必要があります。

(function($){
    $.extend({
        myNamspace : {
          functionName: function(){
            // return whatever
          }
        }
    }});
})(jQuery);
于 2009-12-14T00:53:38.160 に答える
2

アップデート

複数のセレクターを含む複数の操作を行う場合、何が最も理にかなっているかを判断する必要があります。1 つのセレクターが主要な焦点であるが、他の項目にも影響を与える場合、それをプラグインのように記述し、次のように主要な結果セットを返します。

$.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);
于 2009-12-14T01:11:02.490 に答える