web-dev-qa-db-fra.com

Comment vérifier si un élément n'a PAS une classe spécifique?

Comment puis-je vérifier s'il n'y a pas de cours? Par exemple, je sais comment vérifier si elle a la classe "test", mais comment puis-je vérifier si elle n'a pas la classe "test"?

if($(this).hasClass("test")){
}
208
user1005793
if (!$(this).hasClass("test")) {
427
sdleihssirhc

la réponse de sdleihssirhc est bien sûr la bonne pour le cas de la question, mais juste comme référence si vous devez sélectionner des éléments qui n'ont pas une classe donnée, vous pouvez utiliser le sélecteur not :

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

Sélectionnez un élément (ou groupe d'éléments) ayant la classe "abc", mais pas la classe "xyz":

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

Lors de la sélection de CSS standard, vous pouvez utiliser .abc:not(.xyz).

11
George-Paul B.

Vous pouvez essayer ceci:

<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.
});
6
aircraft

utilisez la méthode .not () et recherchez un attribut:

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

Vérifiez-le ici: http://jsfiddle.net/AWb79/

6
Matthew Cira

Il existe des scénarios plus complexes où cela ne fonctionne pas. Que faire si vous souhaitez sélectionner un élément de classe A qui ne contient pas d’élément de classe B. Vous aurez besoin de quelque chose de plus semblable à:

Si l'élément parent ne contient pas certains éléments enfants; jQuery

0
omarjebari

en lisant 6 ans plus tard, je pensais aussi que je m'attaquerais à cela, également dans le veine de TIMTOWTDI ...: D, en espérant que ce n'est pas une erreur "JS Etiquette".

J'ai l'habitude de mettre en place un var avec la condition et de le consulter plus tard..i.e;

// 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) {
    //
  }
}

Bien que je devrais mentionner que je le fais parce que j'utilise principalement l'opérateur ternaire conditionnel et que je veux du code propre. Donc dans ce cas, tout ce que je voudrais, c'est ceci:

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

...au lieu de cela:

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