Задать вопрос
@starostyants

Как узнать, что ul список состоит из ссылок?

Как с помощью JS отличить список такого вида:
<ul>
  <li><a href="#">Link 1</a></li>
  <li><a href="#">Link 2</a></li>
  <li><a href="#">Link 3</a></li>
</ul>


от такого:
<ul>
  <li>Some text</li>
   <li>More some text</li>
   <li>I need more text</li>
</ul>


и от такого:
<ul>
  <li>Some text <a href="#">and some link</a></li>
   <li>More some text</li>
   <li>I need more text</li>
</ul>
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const isOnlyLinks = ul => Array
  .from(ul.querySelectorAll(':scope > li'))
  .every(({ childNodes: n }) => !~-n.length && n[0] instanceof HTMLAnchorElement);

или

const isOnlyLinks = ul =>
  Array.prototype.every.call(
    ul.children,
    ({ childNodes: [ a, b ] }) => a && a.tagName === 'A' && !b,
  );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
сам принцип проверок можно использовать, но вообще решение довольно "грязное"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы