Pour certaines raisons de performances, j'essaie de trouver un moyen de sélectionner uniquement les nœuds frères du nœud sélectionné.
Par exemple,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Si j'ai sélectionné le nœud inner1, y a-t-il un moyen pour moi d'accéder à ses frères et sœurs, inner2-4
nœuds?
javascript
dom
siblings
codingbear
la source
la source
Cela renverra le frère immédiatement après, ou null plus aucun frère n'est disponible. De même, vous pouvez utiliser
previousSibling
.[Edit] Après réflexion, cela ne donnera pas la
div
balise suivante , mais l'espace blanc après le nœud. Mieux semble êtreIl existe également un fichier
previousElementSibling
.la source
Rapide:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Récupérez les enfants du parent sous forme de tableau, filtrez cet élément.
Éditer:
Et pour filtrer les nœuds de texte (Merci pmrotule ):
la source
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
À partir de 2017:
réponse simple:
element.nextElementSibling
pour obtenir le bon frère d'élément. aussi tu aselement.previousElementSibling
pour le précédentà partir d'ici, c'est assez simple d'avoir toutes les prochaines sibiling
la source
next
ouprevious
. Spécifier exactement le recul ou l’avant n’aide pas beaucoup dans ce cas.avez-vous vérifié la méthode "Sibling" dans jQuery?
le n.nodeType == 1 vérifie si l'élément est un nœud html et n! == exclut l'élément courant.
Je pense que vous pouvez utiliser la même fonction, tout ce code semble être du javascript vanille.
la source
Il y a plusieurs façons de le faire.
L'une ou l'autre des solutions suivantes devrait faire l'affaire.
FYI: La base de code jQuery est une excellente ressource pour observer le Javascript de grade A.
Voici un excellent outil qui révèle la base de code jQuery d'une manière très simplifiée. http://james.padolsey.com/jquery/
la source
Voici comment vous pouvez obtenir les frères précédents, suivants et tous les frères et sœurs (des deux côtés):
la source
Utilisez document.querySelectorAll () et Loops et itération
la source
jQuery
Natif - dernier, Edge13 +
Natif (alternative) - le plus récent, Edge13 +
Natif - IE10 +
la source
la source
1) Ajouter la classe sélectionnée à l'élément cible
2) Rechercher tous les enfants de l'élément parent à l'exclusion de l'élément cible
3) Supprimer la classe de l'élément cible
la source
La fonction suivante retournera un tableau contenant tous les frères et sœurs de l'élément donné.
Passez simplement l'élément sélectionné dans la
getSiblings()
fonction car ce n'est qu'un paramètre.la source
la source