2012-07-14 17 views
12

Estoy usando una configuración de modernizador personalizada que ha seleccionado las características que empleo en mi página (y solo esas características).Cómo obtener etiquetas de clase de elemento html

Por lo tanto, me gustaría simplemente agarrar el className del <html> de la página para que pueda comprobar para ver cuántos no- clases prefijadas están presentes (tal vez la comprobación classlist.match(/no-/g).length) y determinar si mi javascript sólo debe darse por vencido.

No está claro si debo utilizar

document.getElementsByTagName('html').className 

o

$('html').attr('class') 

o

document.documentElement.className 
+0

No veo ninguna razón para no utilizar cualquiera de los tres. – Kyle

+2

Todos funcionan, pero es posible que tengas problemas entre navegadores con el 1er y el 3er. El segundo resuma esto mediante jquery. –

+2

Cualquiera funcionará, excepto que probablemente necesite desreferenciar el nombre 'getElementsByTagName()' ya que devuelve una lista de nodos: 'document.getElementsByTagName ('html') [0] .className' –

Respuesta

24

voy a ir a por:

document.documentElement.className; 

Debido a que no implica el llamado de cualquier función, ni una capa adicional como jQuery. Idealmente este es el más limpio y el más rápido.

+0

Usando esto actualmente. –

1

Si está utilizando jQuery en su proyecto por qué no usar éste:

var classList = $("html").attr('class').split(/\s+/); 
var prefix = 'no-'; 

$.each(classList, function(index, item){ 
    if (item.substring(0, 2) === prefix) { 
    //do something 
    } 
}); 

?

2

Si se utiliza llanura JS, el equivalente sería:

document.getElementsByTagName('html')[0].className 
+1

Haz que 'plain vanilla', por favor. ¡Pensé que me faltaba otra biblioteca js hasta que leí la línea de código! VanillaJS, suena como una biblioteca! –

+0

Citaré [wikipedia] (http://en.wikipedia.org/wiki/Vanilla). Un uso principal de 'vainilla' es en sabor helado. El sabor más común de los helados es "vainilla", y por lo tanto, la mayoría de las personas lo consideran el sabor "predeterminado". Por analogía, el término "vainilla" se usa a veces como sinónimo de "simple". – Martin

+0

Diría 'simple JS'. (Y usaría 'document.getElementsByTagName ('html') [0] .className'). –

3

puede utilizar jQuery hasClass `Método:

determinar si alguno de los elementos coincidentes se les asigna la clase dada.

if ($('html').hasClass('no-something')) { 
    // do something here 
} 
+0

Esto solo funciona si ya conoce el nombre de la clase, que es diferente de lo que se le preguntó. – Teepeemm

Cuestiones relacionadas