По некоторым причинам производительности я пытаюсь найти способ выбрать только одноуровневые узлы выбранного узла.
Например,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Если я выбрал узел inner1, могу ли я получить доступ к его братьям и сестрам, inner2-4
узлам?
javascript
dom
siblings
кодирующий медведь
источник
источник
Это вернет одного брата сразу после него, или null больше нет доступных братьев и сестер. Точно так же вы можете использовать
previousSibling
.[Edit] Если подумать, это даст не следующий
div
тег, а пробел после узла. Кажется, лучшеТакже существует файл
previousElementSibling
.источник
Быстрый:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Получите дочерние элементы родителя в виде массива, отфильтруйте этот элемент.
Редактировать:
И чтобы отфильтровать текстовые узлы (спасибо pmrotule ):
источник
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
С 2017 года:
простой ответ:
element.nextElementSibling
для получения правильного родственного элемента. также у вас естьelement.previousElementSibling
для предыдущегоотсюда довольно просто получить все следующие родственники
источник
next
илиprevious
. Указание точного перехода назад или вперед в этом случае мало помогает.Вы проверили метод "Sibling" в jQuery?
n.nodeType == 1 проверяет, является ли элемент узлом html, а n! == исключает текущий элемент.
Я думаю, вы можете использовать ту же функцию, весь этот код кажется ванильным javascript.
источник
Есть несколько способов сделать это.
Любой из следующих вариантов подойдет.
К вашему сведению: кодовая база jQuery - отличный ресурс для наблюдения за Javascript класса A.
Вот отличный инструмент, который очень упрощенно раскрывает кодовую базу jQuery. http://james.padolsey.com/jquery/
источник
Вот как вы можете получить предыдущего, следующего и всех братьев и сестер (с обеих сторон):
источник
Используйте document.querySelectorAll (), а также циклы и итерацию
источник
jQuery
Родной - последний, Edge13 +
Родной (альтернатива) - последняя версия, Edge13 +
Родной - IE10 +
источник
источник
1) Добавить выбранный класс к целевому элементу
2) Найти всех дочерних элементов родительского элемента, исключая целевой элемент
3) Удалить класс из целевого элемента
источник
Следующая функция вернет массив, содержащий всех братьев и сестер данного элемента.
Просто передайте выбранный элемент в
getSiblings()
функцию как единственный параметр.источник
источник