Выбор списка элемента, если у него есть дочерний список - PullRequest
0 голосов
/ 11 мая 2018

У меня есть список ссылок.Мне нужно добавить что-то к ссылке, если родительский LI , который содержит другой список.Трудно выбрать верхний уровень, а не те, что у детей.

<div id="container">
  <ul>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
      <ul>
        <li>
          <a href="#">link</a>
        </li>
        <li>
          <a href="#">link</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
      <ul>
        <li>
          <a href="#">link</a>
        </li>
        <li>
          <a href="#">link</a>
        </li>
      </ul>
    </li>
  </ul>
</div>

JS

 $('#container > ul > li').has('ul').each(function() {
   $(this).find('a').append('zzz');
 });

DEMO

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Демо

Вы попробуете это,

$('#container > ul > li').has('ul').each(function() {
       $(this).find('li').next().append('<li><a href="#">My new Tag</a></li>');
     }); 
0 голосов
/ 11 мая 2018

Вот сумасшедшая идея ... вы можете сделать это исключительно с помощью CSS, нацелив теги <a>, которые не являются последними дочерними элементами в их родительском элементе <li>.

#container > ul > li > a:not(:last-child):after {
  content: 'zzz';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <ul>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
      <ul>
        <li>
          <a href="#">link</a>
        </li>
        <li>
          <a href="#">link</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#">link</a>
    </li>
    <li>
      <a href="#">link</a>
      <ul>
        <li>
          <a href="#">link</a>
        </li>
        <li>
          <a href="#">link</a>
        </li>
      </ul>
    </li>
  </ul>
</div>

В противном случае вы можете использовать подобный селектор в jQuery

$('#container > ul > li > a:not(:last-child)').append('zzz');
0 голосов
/ 11 мая 2018

Как говорится в вашем вопросе, я бы отфильтровал якоря для родителей, у которых есть список.

 $('a')
  .filter(function() { return $(this).parent().find('ul').length; })
  .each(function() {
    $(this).append('zzz');
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...