2

Jqueryライブラリの.toggleClass()メソッドのAPIは次のとおりです。スイッチ部分の実装方法がわかりません。スイッチ部分はブール値になるはずですか?そうである場合は、実装されているかどうか。

したがって、コードが次の場合:

`$('selector').toggleClass('class-to-be-toggled' , ($(this).hasClass('white')))`

そして、($(this).hasClass('white'))trueと評価された場合、.toggleClass()は実行され、falseと評価された場合、は実行され.toggleClass()ませんか?

または私はの目的を誤解していますかswitch

4

4 に答える 4

3

パラメータを省略すると、現在のクラスに応じてクラスが追加または削除されます。パラメータを渡すと、要素の現在の状態に関係なく、パラメータに応じてクラスが追加または削除されます。

たとえば、これは次のとおりです。

$(':checkbox').click(function() {
    $(this).parent().toggleClass('selected', $(this).is(':checked'));
});

はほとんど書くことの速記です:

$(':checkbox').click(function() {
    if($(this).is(':checked')) {
        $(this).parent().addClass('selected');
    } else {
        $(this).parent().removeClass('selected');
    }
});

ほとんどの場合、あなたはただでうまくやっていくことに反対するかもしれません

$(':checkbox').click(function() {
    $(this).parent().toggleClass('selected');
});

これはよくあることですが、チェックボックスのチェック以外の何かがクラスに干渉する可能selected性がある場合、必要なものを正確に指定するパラメーターを渡さないと、トグルが同期しなくなるリスクがあります。すること。

于 2012-07-24T06:24:49.793 に答える
3

スイッチブール値は、クラスを追加するか削除するかを決定します。switch引数がtrueの場合はクラスが追加され、falseの場合はクラスが削除されます。

jQueryドキュメントから直接:

.toggleClass( className, switch )  

className - One or more class names (separated by spaces) 
    to be toggled for each element in the matched set. 
switch - A Boolean (not just truthy/falsy) value to determine 
    whether the class should be added or removed.

jQueryのドキュメントページには、switch引数の使用法を示すコード例もあります。

スイッチブール値がまったく渡されない場合、クラスはまだ存在しない場合は追加され、存在する場合は削除されます(したがって、クラスは切り替えられます)。

于 2012-07-24T06:20:51.387 に答える
1

.toggleClass()の2番目のパラメーターは、トライステートパラメーターです。

  • $x.toggleClass('c', true)クラスを追加するにはc
  • $x.toggleClass('c', false)クラスを削除するにはc
  • $x.toggleClass('c')存在するかどうかを反転cします(存在する場合は追加し、存在しない場合は削除します)

    $x.toggleClass('class', undefined)また反転します

この4番目の選択肢は、.toggleClass()に記載されていませんが、オプションの関数パラメーターが機能する方法であるため、機能することが保証されています。

jQueryソースコードの違いは。のようtypeof switch == 'boolean'です。Boolean(0)ちなみにそれは同じように扱わfalseれるので、クラスも削除されます。スイッチパラメータを省略することに加えて、パスするか、反転トグルアクションを取得できるようnullです42。しかしもちろん、文書化されていない機能をコーディングするべきではありません。明示的に切り替えるundefined場合は、合格することをお勧めします。

于 2019-06-01T20:05:04.877 に答える
0

2番目のパラメータ(スイッチ)がtrueの場合、クラスは追加され、falseの場合、クラスは削除されます

于 2012-07-24T06:23:03.387 に答える