2012-01-22 20 views
23

Estoy usando hasClass() para verificar en mi sentencia if si un elemento tiene una clase determinada. ¿Cómo puedo verificar mi declaración if si un elemento no tiene una clase determinada? Gracias de antemano por sus respuestas. Aclamaciones. Bagazo.Jquery opuesto a .hasClass()?

Respuesta

59

Por qué no simplemente:

if (!el.hasClass ('foo')) 
{ 

} 
+0

Hola. Gracias por su rápida respuesta. Entonces sería si ($ (! '# Div'). HasClass ('foo'))? – Marc

+6

if (! $ ('# Div'). HasClass ('foo')) – sathia

+0

Gracias a todos .. – Marc

6
if (!element.hasClass('classname')) { 
    ... 
} 
+3

+1 LOL simplicidad en sí! –

18

De manera más general en javascript, para comprobar lo contrario de un resultado booleano, use la lógica NO operador !:

var isValid = false; 
if (!isValid) { 
    // execute if isValid = false; 
} 

Por su pregunta, .hasClass() devuelve un valor booleano si el elemento tiene la clase especificada, por lo que si tiene la expresión:

<div class="someClass"></div> 

if ($('div').hasClass('someClass')) { 
    // will execute 
} 

para comprobar si no tiene esa clase:

if (!$('div').hasClass('someClass')) { 
    // will not get here because our element has the class "someClass" 
} 

Al seleccionar elementos, si se quiere evitar aquellos que tienen una cierta clase, puede utilizar la pseudo-selector de :not():

$('div:not(.someClass)') 

About the :not() selector

+0

Merci Didier pour le détail. – Marc

+0

Hay otra forma de hacerlo. Si desea eliminar elementos de una colección existente, puede usar '.not()' (vea http://api.jquery.com/not/). Ejemplo: '$ ('. Book p'). AddClass ('referenciable'). Not ('. Aside'). AddClass ('numerado');' – Shawn

0

Para utilizar chaning, que ca n usa el filtro.

$(...some selector...).filter(function(){ 
    return !$(this).hasClass('yourclass'); 
}).each-or-do-more 
+3

'.not()' también permite esto: '$ (. ... algún selector ...). not ('. yourclass'). each-or-do-more' – Shawn

0
if (!($('class/id/objct').hasClass('class name'))) { 
     //codes here... 
} 
2

Puede utilizar

el.is('.oneClass:not(.secondClass)') 

si necesita marcar más de una clase o

el.is(':not(.secondClass)') 

si necesita comprobar una sola clase.