2016-10-06 9 views
0

jQueryプラグインを開発しています。最初のパラメータを設定せずに2番目のパラメータを取得する可能性があるかどうかを知りたいと思います。最初に設定しないで第2パラメータを呼び出す

MCVE:

https://jsfiddle.net/2fgb5agL/

//jQuery 
$.fn.myPlugin = function(param1,param2) { 
    return this.each(function() { 
     if (param2) { 
      alert("param2 ok"); 
     } 
    }); 
}; 

//Call the plugin 
$("#call").click(function() { 
    $(this).myPlugin("", "xyz"); 
}); 

私は何を意味することである:それは$(element).myPlugin("xyz")を呼び出し、プラグインが定義されている文字列(例: "XYZ")を認識期待することが可能ですし、次に '何かをします'(他の機能を呼び出す)。

したがって、最初のパラメータを設定せずに2番目のパラメータを取得するには、$(element).myPlugin(undefined,"xyz")を呼び出す必要はありません。

読んでいただきありがとうございます。

p.s .:私が達成したいのは、よりクリーンなコードです。

+1

いいえ、できない方法があります。たとえば、オブジェクトを渡す、または引数が異なる場合は、最初の引数が事前定義された型などであるかどうかを確認するなどの方法があります。 – adeneo

答えて

1

パラメータの型が厳密に異なる場合を除き、関数内で区別することさえできません。

//jQuery 
$.fn.myPlugin = function(options) { 
    return this.each(function() { 
     if (options.param2) { 
      alert("param2 ok"); 
     } 
    }); 
}; 

$("#call").click(function() { 
    $(this).myPlugin({ param1: "", param2: "xyz" }); 
}); 

あなたのプラグインのために合格するためにどの引数を選んだことができるこの方法を:

はそうのような引数として単一のオブジェクトパラメータを使用するのが一般的です。例:$(this).myPlugin({ param2: "xyz" });

+0

それは私の最初の考えでした。私はオブジェクトを渡すことはちょっと醜いので、オプションを避けようとしました。ありがとうございました。 –

+0

醜いかどうかは、唯一の選択肢です。 jQueryのドキュメント(https://learn.jquery.com/plugins/basic-plugin-creation/)でもお勧めします。 –

関連する問題