Dis que j'ai ceci:
<div class="class1 class2"></div>
Comment sélectionner cet div
élément?
document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]
Cela ne fonctionne pas.
Je sais que, dans jQuery, c'est le cas $('.class1.class2')
, mais j'aimerais le sélectionner avec du JavaScript vanilla.
javascript
class
element
Nathan Prométhée
la source
la source
ET (les deux classes)
OU (au moins une classe)
XOR (une classe mais pas l'autre)
NAND (pas les deux classes)
NOR (aucune des deux classes)
la source
querySelectorAll avec des sélecteurs de classe standard fonctionne également pour cela.
la source
document.querySelectorAll('.class1, .class2');
.class1
OR.class2
, tandis que celui ci-dessus ne capturerait que les éléments avec les deux classes et fonctionne en fait. Voir la sortie console de ce test: jsfiddle.net/0ph1p9p2Comme @filoxo l'a dit, vous pouvez utiliser
document.querySelectorAll
.Si vous savez qu'il n'y a qu'un seul élément avec la classe que vous recherchez, ou que vous n'êtes intéressé que par le premier, vous pouvez utiliser:
BTW, tandis
.class1.class2
qu'indique un élément avec les deux classes,.class1 .class2
(notez l'espace blanc) indique une hiérarchie - et un élément avec une classeclass2
qui est à l'intérieur d'un élément avec une classeclass1
:Et si vous voulez forcer la récupération d'un enfant direct, utilisez
>
sign (.class1 > .class2
):Pour des informations complètes sur les sélecteurs:
https://www.w3schools.com/jquery/jquery_ref_selectors.asp
la source
html
code javascritp
La méthode querySelectorAll () renvoie tous les éléments du document qui correspondent à un ou plusieurs sélecteurs CSS spécifiés, sous la forme d'un objet NodeList statique.
L'objet NodeList représente une collection de nœuds. Les nœuds sont accessibles par des numéros d'index. L'index commence à 0.
en savoir plus sur https://www.w3schools.com/jsref/met_document_queryselectorall.asp
== Merci ==
la source
Ok, ce code fait exactement ce dont vous avez besoin:
HTML:
JS:
J'espère que ça aide! ;)
la source
en fait, la réponse de @bazzlebrush et le commentaire de @filoxo m'ont beaucoup aidé.
J'avais besoin de trouver les éléments où la classe pourrait être "zA yO" OU "zA zE"
En utilisant jquery, je sélectionne d'abord le parent des éléments souhaités:
(un div avec une classe commençant par 'abc' et style! = 'display: none')
puis les enfants souhaités de cet élément:
fonctionne parfaitement! notez que vous n'avez pas à faire document.querySelector, vous pouvez comme ci-dessus passer dans un objet présélectionné.
la source