8


2

より良いjQueryプラグインの作成

現時点では、jQueryプラグインを実行し、ifステートメントでロジックを実行しています。

たとえば、私は持っています:

(function($) {
    $.fn.myplugin = function(action) {

        if(action == "foo"){

        }

        if(action == "bar"){

        }

        if(action == "grapefruits"){

        }

    }
})(jQuery);

これについてより良い方法はありますか?

イベントハンドラーでも同じですが、プラグイン内で宣言できますか?

2 Answer


9


次のように、オブジェクトにさまざまな関数を保存し、インデクサーを使用できます。

(function($) {
    var methods = {
        foo: function(action) { ... },
        bar: function(action, someParam) { ... },
        grapefruits: function(action, param1, param2) { ... },
        ...
    };

    $.fn.myplugin = function(action) {
        methods[action].apply(this, arguments);
    }
})(jQuery);


2


アクションを複数回確認する理由はありませんか? 私は個人的に「スイッチ」の構文が好きではなく、このスタイルを好みます。 あなたはそれを好きにすることができます

    if(action == "foo"){
    }
    else if(action == "bar"){
    }
    else if(action == "grapefruits"){
    }
    else{
    //this is the default/unspecified case
    }

別のオプションは、それぞれを名前としてオブジェクトに保存することです。 これは、たとえばPythonでも多く行われます。

   var plugin_actions={
      'foo':function(){},
      'bar':function(){},
      'grapefruits':function(){}
       }
   plugin_actions[action]();