Первый общий родитель
Добрый день!
Подскажите пожалуйста. Как получить первый общий родитель у одинаковых элементов. Например: есть несколько одинаковых элементов, в моем случае это ссылки a.link Как добраться до их первого общего родителя, в моем случае это div.general ? Причем вложенность может быть любая, главное что, элементы одинаковые (т.е. определенный класс или data атрибут какой-то) и у них найти первый общий родитель. Иными словами если у этих элементов есть общий родитель, то найти его. <div class="other"> <div class="general"> <div><a href="#" class="link" data-title="ok">ссылка</a></div> <div><a href="#" class="link" data-title="ok">ссылка</a></div> <div> <div><a href="#" class="link" data-title="ok">ссылка</a></div> </div> </div> </div> |
Какая-то размытая постановка задачи. Что есть "одинаковые элементы"? Это когда совпадают по тэгу и классу? А если есть несколько наборов одинаковых элементов, например, 2 штуки a.link и 2 штуки a.zzz ?
|
Да, немного не точно описал. Имеется ввиду одинаковые элементы, например по классу, в моем случае a.link
|
ну то есть надо найти первый попавшийся набор одинаковых элементов, и потом для этого набора найти общего родителя?
|
Да. Известны какие-то элементы, например a.link, или например с каким-то одинаковым data атрибутом. И если у них есть общий родитель, то найти его.
Проще говоря, мне нужно получить класс их первого общего родителя. |
<body> <div class="other"> <div class="general"> <div><a href="#" class="link" data-title="ok">ссылка</a></div> <div><a href="#" class="link" data-title="ok">ссылка</a></div> <div> <div><a href="#" class="link" data-title="ok">ссылка</a></div> </div> </div> </div> <script> const generalParent =(...chlds) => { let par = chlds[0] while (par = par.parentElement) { if (chlds.every(e => par.contains(e))) return par; } return null; } alert(generalParent (...document.querySelectorAll('a.link'))?.classList) </script> </body> |
Невероятно! Спасибо тебе добрый человек, всё отлично!
|
Часовой пояс GMT +3, время: 03:06. |