Comment vérifier s'il n'y a pas de cours. Par exemple, je sais comment vérifier s'il a la classe "test", mais comment puis-je vérifier s'il n'a pas la classe "test"?
if($(this).hasClass("test")){
}
Comment vérifier s'il n'y a pas de cours. Par exemple, je sais comment vérifier s'il a la classe "test", mais comment puis-je vérifier s'il n'a pas la classe "test"?
if($(this).hasClass("test")){
}
Réponses:
if (!$(this).hasClass("test")) {
La réponse de sdleihssirhc est bien sûr la bonne pour le cas dans la question, mais juste comme référence si vous devez sélectionner des éléments qui n'ont pas une certaine classe, vous pouvez utiliser le sélecteur not :
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Sélectionnez un élément (ou groupe d'éléments) ayant la classe "abc", n'ayant pas la classe "xyz":
$('.abc:not(".xyz")')
Lors de la sélection de CSS standard, vous pouvez utiliser .abc:not(.xyz)
.
utilisez la méthode .not () et recherchez un attribut:
$('p').not('[class]');
Vérifiez-le ici: http://jsfiddle.net/AWb79/
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.
});
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éments de classe B. Vous finissez par avoir besoin de quelque chose de plus comme:
Si l'élément parent ne contient pas certain élément enfant; jQuery
en lisant ces 6 ans plus tard et en pensant que je prendrais également un coup d' œil , également dans la veine TIMTOWTDI ...: D, en espérant que ce n'est pas une «étiquette JS» incorrecte.
J'ai l'habitude de mettre en place un var avec la condition, puis de m'en référer plus tard ..
// 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 fais cela parce que j'utilise principalement l'opérateur ternaire conditionnel et que je veux du code propre. Donc dans ce cas, tout ce que j'aurais 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) : '' ;
Je ne sais pas pourquoi, mais la réponse acceptée n'a pas fonctionné pour moi. Au lieu de cela, cela a fonctionné:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
> :)