Por algunas razones de rendimiento, estoy tratando de encontrar una manera de seleccionar solo los nodos hermanos del nodo seleccionado.
Por ejemplo,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Si seleccioné el nodo inner1, ¿hay alguna forma de acceder a sus hermanos, inner2-4
nodos?
javascript
dom
siblings
codificación
fuente
fuente
Esto devolverá el hermano inmediatamente después, o nulo, no hay más hermanos disponibles. Asimismo, puede utilizar
previousSibling
.[Editar] Pensándolo bien, esto no dará la siguiente
div
etiqueta, sino el espacio en blanco después del nodo. Mejor parece serTambién existe un
previousElementSibling
.fuente
Rápido:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Obtenga los hijos de los padres como una matriz, filtre este elemento.
Editar:
Y para filtrar los nodos de texto (gracias pmrotule ):
fuente
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
A partir de 2017:
respuesta sencilla:
element.nextElementSibling
para obtener el elemento hermano correcto. también lo tieneselement.previousElementSibling
para el anteriora partir de aquí es bastante simple obtener toda la próxima sibiling
fuente
next
oprevious
. Especificar exactamente retroceder o avanzar no ayuda mucho en este caso.¿Ha verificado el método "Sibling" en jQuery?
n.nodeType == 1 comprueba si el elemento es un nodo html y n! == excluye el elemento actual.
Creo que puedes usar la misma función, todo ese código parece ser javascript de vainilla.
fuente
Hay varias formas de hacerlo.
Cualquiera de los siguientes debería funcionar.
Para su información: el código base de jQuery es un gran recurso para observar Javascript de grado A.
Aquí hay una excelente herramienta que revela el código base de jQuery de una manera muy simplificada. http://james.padolsey.com/jquery/
fuente
Así es como puede obtener los hermanos anteriores, siguientes y todos los hermanos (ambos lados):
fuente
Utilice document.querySelectorAll () y Loops e iteración
fuente
jQuery
Nativo - más reciente, Edge13 +
Nativo (alternativa) - más reciente, Edge13 +
Nativo: IE10 +
fuente
fuente
1) Agregar la clase seleccionada al elemento de destino
2) Buscar todos los hijos del elemento principal excluyendo el elemento de destino
3) Eliminar la clase del elemento de destino
fuente
La siguiente función devolverá una matriz que contiene todos los hermanos del elemento dado.
Simplemente pase el elemento seleccionado a la
getSiblings()
función como su único parámetro.fuente
fuente