3

functionを使用して変数 javascript を呼び出す方法を示しましたwindow[]()

変数 jQuery を呼び出すことは可能functionですか? もしそうなら、どのように?

通常、目に見えるスイッチを切り替えるには 3 進数しか必要ありません。コードの多くの行を 1 に押しつぶすと非常に便利です。たとえば、$.aja() success:

if(msg.length > 0){
    $("#gridViewContainer").slideDown()
}
else{
    $("#gridViewContainer").slideUp()
}

booleanaはおそらく何かに渡される可能性があるため、これはおそらく悪い例ですslide()が、上記のリンクされた質問で概念を使用したいと思います。

これは私にとってはうまくいきませんでした:

$("#gridViewContainer")[((msg.length > 0)?'slideDown':'slideUp')]()
4

1 に答える 1

6

jQuery 関数は依然として単なる JavaScript 関数であるため、他の JS 関数と同じ規則が適用されます。

objectVar次のように、オブジェクトのメソッドを呼び出すことができます。

objVar.method();
objVar["method"]();
var methodName = "method";
objVar[methodName]();

あなたの質問は using window[]()- を使用して言及しましたが、これはグローバル関数に適用されます。これは、基本的にはのプロパティであるwindowためです (もちろん、ブラウザーで JS を実行している場合)。

したがって、jQuery の場合は、次のようにすることができます。

var methodName = "hide";
$(someSelector)[methodName]();
$(someSelector)[anyJSExpressionThatReturnsAStringThatIsAjQueryMethod]();

編集:質問の新しいバージョンを見ました。?:メソッド名を選択するオペレーターと共に表示されるコード行は、 if/else. 私自身も同様のコードを問題なく使用しましたが、Jason P が提供したフィドルで問題なく動作します。ここでの動機はコードを短くすることであるように思われるため、式からすべての括弧を省略して、次のようにすることができます[]

$("#gridViewContainer")[msg.length > 0?'slideDown':'slideUp']();

...またはゼロ以外の場合は true になる> 0ため、その部分を省略します。msg.length

$("#gridViewContainer")[msg.length ?'slideDown':'slideUp']();
于 2013-09-18T18:10:42.520 に答える