В этом сценарии у меня есть ряд элементов списка, каждый из которых имеет соответствующую область содержимого. При нажатии на элемент списка манипулируется соответствующей областью контента (т. Е. Если щелкнуть первый элемент списка, будет манипулироваться первый раздел контента).
<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>
<div>
<section>Content section</section>
<section>Content section</section>
<section>Content section</section>
</div>
Мой способ старой школы заключался в присвоении каждому элементу списка и секции идентификатора, такого как "li1", "li2" и т. Д. И "section1", "section2" и т. Д. Затем я бы проанализировал целое число из идентификатор элемента, по которому щелкнули, и манипулируйте соответствующим разделом.
Есть ли способ определить это без дополнительных атрибутов id? Например, если я щелкаю третий элемент списка и знаю, что это третий элемент, я могу использовать document.querySelector('div:nth-child(3)')
для управления третьим разделом содержимого. Мой вопрос заключается в том, как узнать, что это был 3-й элемент в серии, по которому щелкнули с самого начала.
Мое первое решение было примерно таким:
var target = e.target;
var parent = e.target.parentNode;
for (var i in parent.childNodes) {
if (parent.childNodes[i].nodeType == 1 && parent.childNodes[i] == target) {
// found it... i+1
}
}
Это кажется довольно дорогой операцией по сравнению с использованием только идентификаторов, особенно если было гораздо больше элементов списка и разделов контента. Я надеюсь, что есть некоторый атрибут узла, который даст мне правильную позицию DOM, которую я еще не нашел.
Современные браузерные решения приветствуются. Спасибо.