2011-08-25 8 views

Respuesta

114

En realidad es muy similar a jQuery:

document.getElementsByClassName('class1 class2') 

MDN Doc getElementsByClassName

+13

y ¡soy yo tonto o qué? –

+26

Digo lo que mi amigo, todos tienen algo que aprender. – Joe

11

querySelectorAll con los selectores de clase estándar también funciona para esto.

document.querySelectorAll('.class1.class2'); 
+1

Eso no funciona, tiene que ser 'document.querySelectorAll ('. Class1, .class2');' – bazzlebrush

+0

@bazzlebrush su selector capturaría los elementos con '.class1' OR '.class2', mientras que el anterior solo capturaría elementos con * both * classes y de hecho funciona. Vea la salida de la consola de esta prueba: https://jsfiddle.net/0ph1p9p2/ – filoxo

+0

Ok, mi mal, entendí mal lo que el OP quería hacer. Pero IMO un caso de uso más típico es querer seleccionar elementos que tengan una o ambas clases, en cuyo caso mi ejemplo es el que desea. – bazzlebrush

0

en realidad la respuesta de @bazzlebrush y el comentario de @filoxo me ayudaron mucho.

Necesitaba encontrar los elementos en los que la clase podría ser "zA yO" O "zA zE"

usando jQuery que seleccionar en primer lugar a los padres de los elementos deseados:

(un div con clase que empiezan con 'abc' y el estilo = 'display: none')

var tom = $('div[class^="abc"][style!="display: none;"]')[0];     

entonces los hijos deseados de ese elemento:

var ax = tom.querySelectorAll('.zA.yO, .zA.zE'); 

funciona a la perfección! tenga en cuenta que no tiene que hacer document.querySelector como puede pasar en un objeto preseleccionado.

2

Como dijo @filoxo, puede usar document.querySelectorAll.

Si sabe que sólo hay un elemento con la clase que busca, o que están interesados ​​sólo en la primera de ellas, se puede utilizar:

document.querySelector('.class1.class2'); 

Por cierto, mientras .class1.class2 indica un elemento con ambos clases, .class1 .class2 (nótese el espacio en blanco) indica una jerarquía - y el elemento con la clase class2 que se encuentra dentro en elemento con la clase class1:

<div class='class1'> 
    <div> 
    <div class='class2'> 
     : 
     : 

Y si desea forzar la recuperación de un niño directa, utilizar > signo (.class1 > .class2):

<div class='class1'> 
    <div class='class2'> 
    : 
    : 

Para toda información sobre selectores:
https://www.w3schools.com/jquery/jquery_ref_selectors.asp

Cuestiones relacionadas