Digamos que eu tenho isso:
<div class="class1 class2"></div>
Como faço para selecionar esse div
elemento?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
Isso não funciona.
Eu sei que, no jQuery, é $('.class1.class2')
, mas gostaria de selecioná-lo com JavaScript vanilla.
javascript
class
element
Nathan Prometheus
fonte
fonte
AND (ambas as classes)
OU (pelo menos uma classe)
XOR (uma classe, mas não a outra)
NAND (não ambas as classes)
NOR (nenhuma das duas classes)
fonte
querySelectorAll com seletores de classe padrão também funciona para isso.
fonte
document.querySelectorAll('.class1, .class2');
.class1
OR.class2
, enquanto o acima capturaria apenas elementos com ambas as classes e, de fato, funciona. Veja a saída do console deste teste: jsfiddle.net/0ph1p9p2Como o @filoxo disse, você pode usar
document.querySelectorAll
.Se você sabe que existe apenas um elemento com a classe que está procurando ou se interessa apenas pelo primeiro, pode usar:
BTW, enquanto
.class1.class2
indica um elemento com ambas as classes,.class1 .class2
(observe o espaço em branco) indica uma hierarquia - e um elemento com a classeclass2
que está dentro de um elemento com a classeclass1
:E se você deseja forçar a recuperação de um filho direto, use
>
sign (.class1 > .class2
):Para obter informações completas sobre os seletores:
https://www.w3schools.com/jquery/jquery_ref_selectors.asp
fonte
html
código javascritp
O método querySelectorAll () retorna todos os elementos no documento que correspondem aos seletores CSS especificados, como um objeto estático NodeList.
O objeto NodeList representa uma coleção de nós. Os nós podem ser acessados por números de índice. O índice começa em 0.
também saiba mais sobre https://www.w3schools.com/jsref/met_document_queryselectorall.asp
== Obrigado ==
fonte
Ok, este código faz exatamente o que você precisa:
HTML:
JS:
Espero que ajude! ;)
fonte
na verdade, a resposta do @bazzlebrush e o comentário do @filoxo me ajudaram bastante.
Eu precisava encontrar os elementos em que a classe poderia ser "zA yO" OU "zA zE"
Usando jquery, primeiro seleciono o pai dos elementos desejados:
(uma div com classe começando com 'abc' e style! = 'display: none')
então os filhos desejados desse elemento:
funciona perfeitamente! note que você não precisa document.querySelector como pode passar acima em um objeto pré-selecionado.
fonte