Comment faire pour exécuter getElementsByTagName sur les enfants d'un élément?
Je vais avoir du mal à obtenir un sélecteur pour fonctionner correctement.
J'ai ce code HTML:
<div.wrapper>
<div.ui-controlgroup-controls>
<form>
<div.ui-btn></div>
</form>
<div.ui-btn></div>
<div.ui-btn></div>
<div.ui-btn></div>
<div.ui-btn></div>
</div>
</div>
et je suis en train de sélectionner les div
balises, qui sont les enfants de ui-controlgroup-controls
- ce qui signifie l'exclusion de ce qui est à l'intérieur de la forme.
C'est ce que j'essaie:
//el is my div.wrapper element
el.children[0].getElementsByTagName("div");
Toutefois, cela ne fonctionne pas, parce que la div à l'intérieur de la forme se retrouve dans la sélection.
Question:
Comment puis-je sélectionner les éléments correctement quand je ne veux pas utiliser jQuery?
OriginalL'auteur frequent | 2013-04-01
Vous devez vous connecter pour publier un commentaire.
Une façon de le faire est d'itérer sur votre liste de noeud et de vérifier le parent:
Voici une démonstration de cette approche: http://jsfiddle.net/WLhY2/
Plus simple (quoique de moins en moins efficace) consiste à utiliser
querySelectorAll
pour récupérer les nœuds pertinents à l'aide d'un sélecteur d'expression:OriginalL'auteur Asad Saeeduddin
Pour le navigateur qui prend en charge querySelectorAll:
Pour les navigateurs qui le prend en charge l'utilisation de tranche sur NodeList (par exemple, ne pas savoir, au moins pas IE < 9):
Pour les navigateurs qui ne supportent pas ni:
OriginalL'auteur ZER0
Dans la plupart des navigateurs, vous pouvez le faire:
Mais cela peut donner des faux positifs si il y a de plus en plus profondément imbriquée
".ui-controlgroup-controls"
que vous voulez éviter.Si c'est le cas, il suffit de parcourir les
.children
, et de construire une collection de divs imbriqués.Si l'on sait que vous avez un seul
ui-controlgroup-controls
élément, alors vous pouvez vous débarrasser de la boucle externe, et il suffit d'utiliserchildren[0]
.OriginalL'auteur
:scope
est une pseudo-classe représentant l'élément parent. Pas de support dans IE, mais il y a un cale.OriginalL'auteur themefield