2012-01-29 14 views
0

コードを再利用してコードをDRY状態に保つために、独自の名前空間にさらにjQueryプラグインを書き始めました。jQueryプラグイン内での追加機能の追加

私はプラグインオーサリング全体を初めて知りましたが、公式jQueryを含むいくつかのソースを読んでいます。

var a = { 

    }; 

    a.reverseText = { 
     init: function() { 
     reverseText(); 
     }); 
    }, 

    reverse: function() { 
    $(function() { 
     return foo; 
     }); 
    } 

    a.reverseText.init(); 

ので、複数を追加するための適切な方法は何でしょう:一般的に私はこのような名前空間を作成したい

(function($) { 
    // jQuery plugin definition 
    $.fn.reverseText = function(params) { 
     $.fn.reverseText.test(); 
     // merge default and user parameters 
     params = $.extend({ 
      minlength: 0, 
      maxlength: 99999 
     }, params); 
     // traverse all nodes 
     this.each(function() { 
      console.log($(this).parent().data('url')); 
      // express a single node as a jQuery object 
      var $t = $(this); 
      // find text 
      var origText = $t.text(), 
       newText = ''; 
      // text length within defined limits? 
      if (origText.length >= params.minlength && origText.length <= params.maxlength) { 
       // reverse text 
       for (var i = origText.length - 1; i >= 0; i--) newText += origText.substr(i, 1); 
       $t.text(newText); 
      } 
     }); 
     // allow jQuery chaining 
     return this.each; 

    }; 
    // Is this correct? 
    $.fn.reverseText.test = function() { 
    alert('test'); 
    }; 
})(jQuery); 


$(function() { 
    $(".js-test-whatever li:even").reverseText(); 
}); 

:ここ

は、私が遊んだことがわかった例です。 jQueryプラグインの名前空間内の関数?

私は追加機能を含む最初の例のコメントを見てください。

答えて

1

それはそれを行うための許容される方法です。これを行うもう1つの方法は次のようなものです:

(function($) { 
    var reverse = { 
     test: function() { 
      alert('test'); 
     }, 

     fn: function(params) { 
      reverse.test(); 

      /* the rest of your plugin code */ 
     } 
    } 

    // jQuery plugin definition 
    $.fn.reverseText = reverse.fn 
})(jQuery); 

"正しい"方法はありません。現在作業しているプロジェクトに最も適したものを使用してください。

+0

私はそれを試してみて、どのように私はそれが好きかを確認します。 –

関連する問題