Jak sprawdzić, czy nie ma zajęć. Na przykład wiem, jak sprawdzić, czy ma „test” klasy, ale jak sprawdzić, czy nie ma „testu” klasy?
if($(this).hasClass("test")){
}
Jak sprawdzić, czy nie ma zajęć. Na przykład wiem, jak sprawdzić, czy ma „test” klasy, ale jak sprawdzić, czy nie ma „testu” klasy?
if($(this).hasClass("test")){
}
Odpowiedzi:
if (!$(this).hasClass("test")) {
Odpowiedź sdleihssirhc jest oczywiście poprawna dla przypadku w pytaniu, ale jako odniesienie, jeśli chcesz wybrać elementy, które nie mają określonej klasy, możesz użyć selektora not :
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Wybierz element (lub grupę elementów) mający klasę „abc”, a nie klasę „xyz”:
$('.abc:not(".xyz")')
Wybierając zwykły CSS, możesz użyć .abc:not(.xyz)
.
użyj metody .not () i sprawdź atrybut:
$('p').not('[class]');
Sprawdź tutaj: http://jsfiddle.net/AWb79/
Możesz spróbować:
<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.
});
Istnieją bardziej złożone scenariusze, w których to nie działa. Co jeśli chcesz wybrać element z klasą A, który nie zawiera elementów z klasą B. W końcu potrzebujesz czegoś więcej:
Jeśli element nadrzędny nie zawiera określonego elementu podrzędnego; jQuery
czytając te 6 lat później i pomyślałem, że też go zhakuję , również w żyle TIMTOWTDI ...: D, mając nadzieję, że nie jest to nieprawidłowa „etykieta JS”.
Zwykle ustawiam var z warunkiem, a następnie odwołuję się do niego później.
// 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) {
//
}
}
Chociaż powinienem wspomnieć, że robię to, ponieważ używam głównie warunkowego operatora trójskładnikowego i chcę czystego kodu. W tym przypadku chciałbym tylko:
hC ? '' : foo(x, n) ;
// OR -----------
!hC ? foo(x, n) : '' ;
...zamiast tego:
$this.hasClass("test") ? '' : foo(x, n) ;
// OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;
Nie wiem dlaczego, ale zaakceptowana odpowiedź nie działała dla mnie. Zamiast tego działało:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
> :)