jquery経由でクラスを追加するが、存在しない場合にのみ追加する

私はul-listにクラスを追加したいですが(class = "bbox")、クラスが存在しない場合に限ります。 これは私がこれまで持っていたものです。クラスがulタグに存在する場合、jqueryでどのようにチェックするのですか?

$("ul").addClass("bbox");
33
クラスがすでに追加されているかどうかを確認する必要はありません。 .addClass は内部的に .hasClass チェックを行います。参照: stackoverflow.com/questions/13358887
追加された 著者 Metro Smurf,

7 答え

特定のクラスが存在するかどうかを確認するには、次のようにします。

 if(!$("ul").hasClass("class-name")){
    $("ul").addClass("bbox");
 }

クラスが存在するかどうかを確認するには:

if ($('ul').attr('class') == '') {
    $("ul").addClass("bbox");
}
35
追加された
@Andy True、答えが修正されました。
追加された 著者 Matt Asbury,
hasClass()はすでにtrueまたはfalseを返しているので、falseと等しいかどうかのチェックは不要です。 if(!$( 'ul')。hasClass( 'classname'))で十分です
追加された 著者 Andy,
特定のクラスに関しては、jQueryは既にクラスをaddClassで追加する前にチェックしています
追加された 著者 Brad Decker,
#contentの最初のulを選択しようとしましたが、すべてを選択します。なにが問題ですか? hasClass( "bbox")== false){$( "ul");} $ {'ul:nth-​​child(1) }
追加された 著者 mark,

あなたはほとんどそれを持っているkarim79!

あなたを訂正させてください

$("ul:not([class*='bbox'])").addClass("bbox");

タグは絶対クラスなしで一致し、ulに他のクラスがある場合は一致しません。追加したいクラスを正確に検索する必要があります。 .hasClassと同じように。

それが役に立てば幸い

16
追加された
私が誤解されていないなら、あなたは属性セレクターの回りに括弧を忘れてしまった。また、 $( "ul:not([class = = 'bbox'])")。addClass( "bbox"); が良い(チルダ)。
追加された 著者 Bart,

$( '。selector')。addClass( "myClass"); を使用してください。

jQueryのadd/removeクラス関数は、内部的に重複をチェックします。つまり、 addClass を2回呼び出すだけでクラスが1回追加されます。

15
追加された
jQueryドキュメントから: api.jquery.com/addclass このメソッドは、クラス。要素を既に割り当てられているクラスに追加するだけで、クラスを追加するだけです。
追加された 著者 vanduc1102,

I was wondering this would work fine -->

$("ul").removeClass("bbox").addClass("bbox");

最初にそれがあれば削除し、新しいものを追加します。 if というものをすべて入力するのが面倒すぎるので、私のために最善の努力をしました。

12
追加された

簡潔に:

// fine, because nothing happens if 
// there are no matching elements
$("ul[class='']").addClass("bbox");
3
追加された
素敵で短い!
追加された 著者 lucapette,
クラスにaboxがあり、bboxを追加しようとしているとうまくいきません。 Mattのソリューションはこの問題を解決します。
追加された 著者 Moshe Revah,

このコードを使用して、存在しない場合にのみクラスを追加することができます

$('.your-dom:not(.class-name)').addClass('class-name');
3
追加された

2つのクラスを切り替える場合は、このメソッドを使用します

if (foo)
    $('button.btn-foo').removeClass('foo bar').addClass('foo');
if (bar)
    $('button.btn-foo').removeClass('foo bar').addClass('bar');

だから私はボタンの現在の設定を確認する必要はありません

1
追加された