5

このコード行に出くわしましたが、それが何を意味するのかわかりません。

$("#theAppContainer")[s > u ? "addClass" : "removeClass"]("something");

最初の部分は theAppContainer という要素を選択することであり、2 番目の部分は s > u の場合に "addClass" と評価されることは理解していますが、このコード行が全体的に何をするのかわかりません。

4

3 に答える 3

13

角かっこの構文は nameでプロパティの値を取得し、かっこはそのプロパティの値である関数を呼び出します。それは以下と同等です:

var container = $('#theAppContainer');

if(s > u) {
    container.addClass('something');
} else {
    container.removeClass('something');
}

また、そのようなコードは絶対に書かないでください。=)

また、代わりに使用できるtoggleClass2 番目の引数を取ります。switch

$('#theAppContainer').toggleClass('something', s > u);
于 2013-05-21T02:04:20.650 に答える
5

$("#theAppContainer")jquery オブジェクトを返します。

jqueryObject["addClass"]と同義ですjqueryObject.addClass

したがって、jqueryObject["addClass"]jquery オブジェクトの addClass メソッドを返します。

次に、("something")パラメータをメソッドに渡して実行します。

だからあなたは本質的にやっている

var myJqueryObject = $("#theAppContainer");
if(s > u) {
    myJqueryObject.addClass("something");
}
else {
    myJqueryObject.removeClass("something");
}
于 2013-05-21T02:03:46.910 に答える
1

角括弧表記。

$('#element')['hide'](700)

ドット表記:

$('#element').hide(700)

他のもの( ? : )が呼び出されますternary operator

ブール値を返すステートメント比較を行います。
Wheres>uはステートメントであり、結果に応じて値が使用されます。

STATEMENT ? IF TRUE USE THIS : IF FALSE USE THAT ;

if s > uuse 'addClass'else use which は、次 の DOT 表記に変換できるifおよび ifを'removeClass'
取得することを意味します。$("#theAppContainer")["addClass"]("something");s > u$("#theAppContainer")["removeClass"]("something");s===u || s<u

$("#theAppContainer").addClass("something");

また

$("#theAppContainer").removeClass("something");

toggleClass()特定のケースでメソッドを 使用できるため、これは最善の方法ではありませんが、知っておくとよい方法です。
また、括弧表記を使用してはならないというのは正しくありません。高度な JS では、すべてのメリットが見られます。

于 2013-05-21T02:05:44.683 に答える