¿Cómo verifico si no hay una clase? Por ejemplo, sé cómo verificar si tiene la clase "prueba", pero ¿cómo verifico si no tiene la clase "prueba"?
if($(this).hasClass("test")){
}
¿Cómo verifico si no hay una clase? Por ejemplo, sé cómo verificar si tiene la clase "prueba", pero ¿cómo verifico si no tiene la clase "prueba"?
if($(this).hasClass("test")){
}
Respuestas:
if (!$(this).hasClass("test")) {
La respuesta de sdleihssirhc es, por supuesto, la correcta para el caso en la pregunta, pero solo como referencia si necesita seleccionar elementos que no tienen una clase determinada, puede usar el selector no :
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Seleccione el elemento (o grupo de elementos) que tenga la clase "abc", que no tenga la clase "xyz":
$('.abc:not(".xyz")')
Al seleccionar CSS normal puede usar .abc:not(.xyz)
.
usa el método .not () y busca un atributo:
$('p').not('[class]');
Compruébelo aquí: http://jsfiddle.net/AWb79/
Puedes probar esto:
<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.
});
Hay escenarios más complejos donde esto no funciona. ¿Qué sucede si desea seleccionar un elemento con clase A que no contiene elementos con clase B. Termina necesitando algo más como:
Si el elemento padre no contiene cierto elemento hijo; jQuery
Después de leer esto 6 años más tarde, pensé que también podría hacerlo, también en la línea TIMTOWTDI ...: D, con la esperanza de que no sea una "etiqueta JS" incorrecta.
Normalmente configuro una var con la condición y luego me refiero a ella más adelante ... es decir;
// 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) {
//
}
}
Aunque debo mencionar que hago esto porque uso principalmente el operador ternario condicional y quiero un código limpio. Entonces, en este caso, todo lo que tendría es esto:
hC ? '' : foo(x, n) ;
// OR -----------
!hC ? foo(x, n) : '' ;
...en lugar de esto:
$this.hasClass("test") ? '' : foo(x, n) ;
// OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;
No sé por qué, pero la respuesta aceptada no funcionó para mí. En cambio, esto funcionó:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
> :)