要素に特定のクラスがないかどうかを確認するにはどうすればよいですか?


232

クラスがないかどうかを確認するにはどうすればよいですか。たとえば、「test」というクラスがあるかどうかを確認する方法は知っていますが、「test」というクラスがないかどうかを確認するにはどうすればよいですか?

if($(this).hasClass("test")){
}

回答:



145

sdleihssirhcの答えはもちろん問題のケースでは正しいものですが、特定のクラスを持たない要素を選択する必要がある場合の参考として、notセレクターを使用できます。

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 

8
私見あなたの答えは最高です。sdleihssirhcの答えが正しい場合、この質問はjQueryとは関係がなく、「ある条件が与えられている場合、その条件がJavaScriptでtrueでないことをテストするにはどうすればよいですか」としてより適切に定式化されます。jQueryで必要なのは、DOM要素のコレクション全体を単一のオブジェクトと同じくらい簡単に操作できることです。あなたの答えはまさにその解決策を提供します。+1
Stijn de Witt

1
@byronyasgur元の質問のコンテキストで、ポスターは、特定の既知の要素にクラスがないかどうかをテストしたかったのです。このコードは、クラスを持たないすべての要素を選択するため、投稿者の問題を解決しません。なぜこれを最初に投稿したのか覚えていません。
JJJ 2013年

14

クラス「abc」を持ち、クラス「xyz」を持たない要素(または要素のグループ)を選択します。

    $('.abc:not(".xyz")')

通常のCSSを選択するときに使用できます.abc:not(.xyz)


6

.not()メソッドを使用して、属性を確認します。

$('p').not('[class]');

ここで確認してください:http : //jsfiddle.net/AWb79/


8
これは完全に間違っています。ブラケットはクラス用ではなく、属性を識別するセレクターに使用されます。
ミスターパーカー、2015

1
実際、それは完全に正しいです。'[クラス]'は、クラスを持つ(持たない)の属性を正しく識別しています。
デボラ

@Misterparkerクラスは属性です。
Matthew Cira

これは、属性が存在するかどうかをチェックします。クラス値のように要素に特定のクラスがある場合はチェックしません
Mark

6

あなたはこれを試すことができます:

<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>

$(document).ready(function(){
    $("#div2").not('.myClass');  // do not have `myClass` class.
});

この回答はページに何の価値もありません。7年前に投稿されました。コードのみの重複コンテンツを投稿しないでください。
mickmackusa


0

この6年間を最後まで読んで、私もTIMTOWTDI 静脈でハッキングをしようと思いました...:D、「JSのエチケット」が正しくないことを願っています。

私は通常、条件で変数を設定し、後でそれを参照します。

// var set up globally OR locally depending on your requirements
var hC;

function(el) {
  var $this = el;
  hC = $this.hasClass("test");

  // use the variable in the conditional statement
  if (!hC) {
    //
  }
}

私がこれを行うのは、主に条件付き3項演算子を使用し、クリーンなコードが必要なためです。したがって、この場合、私が持っているのはこれだけです:

hC ? '' : foo(x, n) ;
   // OR -----------
!hC ? foo(x, n) : '' ;

...これの代わりに:

$this.hasClass("test") ? '' : foo(x, n) ;
   // OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;

0

理由はわかりませんが、受け入れられた答えはうまくいきませんでした。代わりにこれはうまくいきました:

if ($(this).hasClass("test") !== false) {}

これは実際にクラス「テスト」があるかどうかをチェックします。クラス「test」がないかどうかを確認するには、「=== false」または「!== false」の代わりに「!== true」が必要です。
リサセリーリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.