2012-01-14 7 views
0

次のような方法がベストプラクティスであるjQueryプラグインを構築していない場合のために良いものであれば、私はちょうど思っていた:この方法はプラグインを構築するのに適していますか?

$.fn.loginsys = function(options) { 

    var opts = $.extend({}, $.fn.loginsys.defaults, options); 

    return this.each(function() { 

     /* Code To Be Executed */ 

    }); 

} 

$.fn.loginsys.defaults = { 

    /* Some Options */ 

} 
+0

デフォルトのオプションを変更できるようにしますか? – pimvdb

+0

はい、私はそれが欲しいです。 – Roland

答えて

0

私はjqueryのチュートリアルプラグインからこれをsuggestmます(ただし、いくつかの方法があります) :

(function($) 
{ 
    var globalSettings= 
    { 
     width:400, 
     height:400 
    }; 

    var methods = 
    { 
     init : function(options) 
     { 
      return this.each(function() 
      { 
       var $this=$(this); 
       var settings=$.extend({}, globalSettings, options); 

       //your code 

      }); 
     }, 
     destroy : function() 
     { 
      return this.each(function() 
      { 

      }); 
     }, 
     option : function(option, value) 
     { 

      if(value!=null && value!=undefined) 
      { 
       return this.each(function(){ 
        var $this=$(this); 
        var curr_setts=$this.data('settings'); 
        curr_setts[option]=value; 
        $this.data('settings',curr_setts); 
       }); 
      } 
      else 
      { 
       var $this=$(this); 
       var curr_setts=$this.data('settings'); 
       return curr_setts[option]; 
      } 
     } 
    }; 

    $.fn.siter=function(method, options) 
    { 
     if(methods[method]) 
     { 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } 
     else if(typeof method === 'object' || !method) 
     { 
      return methods.init.apply(this, arguments); 
     } 
     else 
     { 
      $.error('Method ' + method + ' does not exist on jQuery'); 
     } 
    }; 

})(jQuery); 
+1

セミコロンの自動挿入( - >複数行のステートメント/宣言の早期終了)を避けるために、カッコを改行しないでください。プラス、それは醜いです。 – Flo

+0

あなたは本当に古く、コードを書くいくつかの方法があり、私の意見では、これは最も読みやすい方法です。それはまた特定の名前を持っています – albanx

+0

私はプラグインを書くこの方法に関する質問があります、私は他のプラグインでこの 'jQuery.fn.reverse = Array.prototype.reverse;'のような何かを見つけました。それはどういう意味ですか? – Roland

1

練習とは別に、すべて、公開したい理由があるベストデフォルト?

外部から編集可能にしたい場合は、代わりにそのためのセッターを公開し、$ .fn.loginsys = functionクロージャー内に保持して、それらが途方もないことができないようにすることができますあなたのプラグインが動作しなくなるような方法で。

たとえば、jQueryのajaxSettings()を参照してください。

+0

これは良いアイデアのようですが、@albanxコードの例は良いアイデアですオプションはプラグインの外で編集できますか? – Roland

0

http://coding.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/のようなjQueryプラグインの書き方については、いくつかの良いチュートリアルがあります。ちょうどGoogle少し。また、他のjQueryプラグインがどのように構築されているかを見てください。それは私が思うほどのことを学ぶことができる場所です。

1

は、私はあなただけのラッパー

(function($) { 

    // plugin code here 

})(jQuery); 
が欠けていると思う

しかし、多くのプラグインパターンがそこにあります。ここにはbunch of templatesがダウンロード可能です。

+0

ありがとう、私はすべてのテンプレートを見て回ります:) – Roland

関連する問題