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

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

if($(this).hasClass("test")){
}
178
demandé sur Brock Adams 2011-10-20 23:17:13

7 réponses

if (!$(this).hasClass("test")) {
379
répondu sdleihssirhc 2011-10-20 19:18:17

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

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 
117
répondu JJJ 2011-10-20 19:23:59

sélectionner un élément (ou un groupe d'éléments) de la classe "abc", n'ayant pas la classe "xyz":

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

lorsque vous sélectionnez CSS régulier, vous pouvez utiliser .abc:not(.xyz) .

8
répondu George-Paul Becheanu 2015-06-10 05:13:36

utiliser le .Non () méthode et vérifier un attribut:

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

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

5
répondu Matthew Cira 2014-03-05 20:39:16

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.
});
3
répondu aircraft 2018-03-21 07:38:03

il y a des scénarios plus complexes où cela ne fonctionne pas. Que faire si vous voulez sélectionner un élément de la classe A qui ne contient pas d'éléments de la classe B. On finit par avoir besoin de quelque chose du genre:

si l'élément parent ne contient pas un certain élément enfant; jQuery

0
répondu omarjebari 2017-05-23 11:54:53

lisant à travers ce 6yrs plus tard et j'ai pensé que je prendrais aussi un hack à elle, aussi dans le la veine TIMTOWTDI ...: D, hoping it is not incorrect 'JS etiquette'.

je mets habituellement en place un var avec la condition et puis se référer à elle plus tard..j'.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 je utilise principalement l'opérateur ternaire conditionnel et que je veux du code propre. Donc dans ce cas, tout ce que j'avais est-ce:

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
répondu le_pragmatist 2018-03-12 22:07:28