Come posso verificare se non esiste una lezione? Ad esempio, so come verificare se ha la classe "test", ma come posso verificare se non ha la classe "test"?
if($(this).hasClass("test")){
}
Come posso verificare se non esiste una lezione? Ad esempio, so come verificare se ha la classe "test", ma come posso verificare se non ha la classe "test"?
if($(this).hasClass("test")){
}
Risposte:
if (!$(this).hasClass("test")) {
La risposta di sdleihssirhc è ovviamente quella corretta per il caso nella domanda, ma solo come riferimento se devi selezionare elementi che non hanno una certa classe, puoi usare il non selettore:
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Seleziona elemento (o gruppo di elementi) con classe "abc", non con classe "xyz":
$('.abc:not(".xyz")')
Quando si seleziona un normale CSS, è possibile utilizzare .abc:not(.xyz)
.
utilizzare il metodo .not () e verificare la presenza di un attributo:
$('p').not('[class]');
Controllalo qui: http://jsfiddle.net/AWb79/
Puoi provare questo:
<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.
});
Esistono scenari più complessi in cui questo non funziona. Cosa succede se si desidera selezionare un elemento con classe A che non contiene elementi con classe B. Si finisce per aver bisogno di qualcosa di più simile a:
Se l'elemento genitore non contiene un determinato elemento figlio; jQuery
leggendo questo 6 anni più tardi e ho pensato che avrei anche fatto un trucco, anche nella vena TIMTOWTDI ...: D, sperando che non sia errata "etichetta JS".
Di solito imposto un var con la condizione e poi mi riferisco ad esso più tardi..ie;
// 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) {
//
}
}
Anche se dovrei dire che lo faccio perché utilizzo principalmente l'operatore ternario condizionale e voglio un codice pulito. Quindi, in questo caso, tutto ciò che avrei è questo:
hC ? '' : foo(x, n) ;
// OR -----------
!hC ? foo(x, n) : '' ;
...Invece di questo:
$this.hasClass("test") ? '' : foo(x, n) ;
// OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;
Non so perché, ma la risposta accettata non ha funzionato per me. Invece ha funzionato:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
> :)