2011-12-06 10 views
6

Al utilizar javascript o prototipo de vanilla, ¿alguien me puede mostrar cómo puedo ejecutar un cheque para ver si existe una clase? Por ejemplo, yo estoy añadiendo una clase llamada HideIt con este código:Comprueba si existe una clase de CSS sin jQuery

var overlay = document.getElementById("overlay_modal"); 
overlay.className += " hideIt"; 

también necesito un script que más tarde puede comprobar para ver si existe HideIt. He intentado cosas como:

if (overlay.className == "hideIt") 

Pero eso no es bueno. ¿Algunas ideas?

+0

Por qué ha llegado esto por voto? – Zac

Respuesta

6

Utilice un regexp. \b coincidirá con los límites de las palabras (un espacio, un carácter de nueva línea, un carácter de puntuación o el final de la cadena).

var overlay = document.getElementById("overlay_modal"); 
if (overlay.className.match(/\bhideIt\b/)) 
{ 
    // frob a widget 
} 
+0

¡Gracias, esto funciona realmente genial! – Zac

+0

¡La mejor, más limpia y más ampliamente respaldada respuesta! :) – MRVDOG

4

usted podría utilizar getElementsByClassName(), aunque esto no es compatible con todos los navegadores (no en IE < 9):

if (!document.getElementsByClassName('classname').length){ 
    // class name does not exist in the document 
} 

else { 
    // class exists in the document 
} 

Usted puede, dependiendo de los requisitos de compatibilidad del navegador, utilice querySelectorAll():

if (document.querySelectorAll('#overlay_modal.hideIt')) { 
    // the element with id of overlay_modal exists and has the class-name 'hideIt' 
} 

Referencias:

+0

Todavía pienso que [usar una expresión regular en el 'className' del elemento'] (http://stackoverflow.com/a/8405435/139010) es el mejor enfoque en este caso, ya que ellos ya tienen una referencia al elemento en sí . Funciona en todos los navegadores, no se necesita detección de funciones ni cuñas. –

+1

Tiendo a estar de acuerdo, pero como ya habías cubierto ese ángulo, no parecía correcto incluir ese aspecto en mi propia respuesta. No estaba diciendo que ninguna de estas formas sea la * mejor *, sino que presenta alternativas a las ya publicadas. –

3
var id = document.getElementById("id"); 
var classes = id.className.split(" "); 
if(classes.indexOf("class_name") == -1) 
{ 
} 
+1

Creo que te refieres a '! == -1'. –

Cuestiones relacionadas