Por alguns motivos de desempenho, estou tentando encontrar uma maneira de selecionar apenas nós irmãos do nó selecionado.
Por exemplo,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Se eu selecionei o nó interno1, existe uma maneira de acessar seus irmãos, inner2-4
nós?
javascript
dom
siblings
urso codificador
fonte
fonte
Isso retornará o irmão imediatamente após ele, ou null, não há mais irmãos disponíveis. Da mesma forma, você pode usar
previousSibling
.[Editar] Pensando bem, isso não fornecerá a próxima
div
tag, mas o espaço em branco após o nó. Melhor parece serTambém existe um
previousElementSibling
.fonte
Rápido:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Obtenha os filhos do pai como um array, filtre este elemento.
Editar:
E para filtrar nós de texto (Obrigado pmrotule ):
fonte
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
A partir de 2017:
resposta direta:
element.nextElementSibling
para obter o irmão do elemento certo. também você temelement.previousElementSibling
para o anteriora partir daqui é muito simples obter todos os próximos irmãos
fonte
next
ouprevious
. Especificar exatamente para trás ou para a frente não ajuda muito neste caso.você verificou o método "irmão" no jQuery?
o n.nodeType == 1 verifica se o elemento é um nó html e n! == exclui o elemento atual.
Acho que você pode usar a mesma função, todo esse código parece ser javascript vanilla.
fonte
Existem algumas maneiras de fazer isso.
Qualquer uma das opções a seguir deve resolver o problema.
FYI: A base de código jQuery é um grande recurso para observar Javascript de grau A.
Aqui está uma excelente ferramenta que revela a base de código jQuery de uma forma muito simplificada. http://james.padolsey.com/jquery/
fonte
Veja como você poderia obter anterior, próximo e todos os irmãos (ambos os lados):
fonte
Use document.querySelectorAll () e Loops e iteração
fonte
jQuery
Native - mais recente, Edge13 +
Nativo (alternativo) - mais recente, Edge13 +
Nativo - IE10 +
fonte
fonte
1) Adicione a classe selecionada ao elemento de destino
2) Encontre todos os filhos do elemento pai, exceto o elemento de destino
3) Remova a classe do elemento de destino
fonte
A função a seguir retornará um array contendo todos os irmãos do elemento fornecido.
Basta passar o elemento selecionado para a
getSiblings()
função como seu único parâmetro.fonte
fonte