2010-11-10 11 views
13

Estoy intentando usar jquery para eliminar una clase de un elemento (sin saber de antemano si existe) y agregar un nuevo elemento para reemplazarlo.jquery quitando una clase (si existe y agregando una nueva clase)

¿Sería ésta la mejor manera (soy skepticle porque no es la comprobación para ver si existe la clase antes de retirarlo):

$(elem).removeClass(oldClass).addClass(newClass); 

gracias

+1

¿Necesita saber si tiene la clase anterior antes de eliminarla? .removeClass() tendrá éxito si existe o no. En otras palabras, si existe, se elimina, si no existe, se omite. –

Respuesta

24
$(elem).removeClass(oldClass).addClass(newClass); 

Esto es perfecto. No es necesario verificar primero; si está allí, va, si no, ya se ha ido.

FYI, también puede alternar Class() y agregar/eliminar una clase dependiendo de si ya está allí o no.

+1

+1, 24 segundos más rápido que mi respuesta (ahora eliminada). –

+0

Tenga en cuenta que también puede eliminar más de una clase a la vez con removeClass() listando espacios separados, como $ (this) .removeClass ('one two'); –

+0

Simplemente curioso, ¿por qué no lo dice en la documentación de JQuery (o no?). Me pregunto cómo se supone que debo saber que no arroja un error si la clase no existe. Gracias. – bba

9

Puede utilizar hasClass:

if ($(elem).hasClass(oldClass)){ 
    // it has class 
} else { 
    // it doesn't have specified class 
} 

Descripción: determine si alguno de los elementos coincidentes son assig ned la clase dada .

3
toggleClass 

hace lo que se puede esperar que haga.

Cuestiones relacionadas