1

いくつかのサイクルプラグインオプションを調べているときにこれを見つけました:

$('#prev')[index == 0 ? 'hide' : 'show']()

認めたくありませんが、これを「長い」形式に拡張するのに苦労しています。インデックスが 0 の場合、要素は非表示になり、それ以外の場合は表示されます。それ$('#prev')[index == 0は私をつまずかせているのです:-(

4

3 に答える 3

4

通常、やりたいことに応じて、$("#prev").hide()またはのいずれかを記述します。$("#prev").show()

ただし、プロパティ名を文字列として角括弧で囲んで、オブジェクトのプロパティにアクセスできます[]。これにより、他の方法では有効でない文字を含むオブジェクト キーを使用できます。ここでは、次のようなものobj["some property name"]でも有効です。

したがって、基本的に、三項演算子は文字列または文字列を取得するかどうかを選択しshowhideそれを使用して jQuery オブジェクト (この場合はメソッド) のプロパティを取得し、それらを呼び出します。

于 2013-10-28T15:13:38.550 に答える
3

簡単にするために、以下のコード:

$('#prev')[index == 0 ? 'hide' : 'show']();

するのと同じです:

if (index == 0) {
    $('#prev').hide();
} else {
    $('#prev').show();
}
于 2013-10-28T15:12:13.533 に答える
2

ここで実際に行われているのは、インデックス変数のテストだけです。ゼロに等しい場合、要素は非表示になり、それ以外の場合は表示されます。

var elem = $('#prev');
if ( index == 0 ) {
  elem.hide();
} else {
  elem.show();
}

'hide' と 'show' の文字列は関数の名前にすぎません。どの関数を呼び出す必要があるかは、三項条件文によって決まります。これらの関数はどちらも要素の関数であるため、実際の要素で呼び出します。ステートメントの最後の括弧は、実際に関数を呼び出すものです。

于 2013-10-28T15:12:11.123 に答える