选择列出一个项目,如果它有子列表

Selecting list a item if it has child list

我有一个 link 的列表。如果父项,我需要向 link 添加一些内容 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

如您的问题所述,我会过滤 parents 具有列表的锚点。

 $('a')
  .filter(function() { return $(this).parent().find('ul').length; })
  .each(function() {
    $(this).append('zzz');
 });

Demo

你试试这个,

$('#container > ul > li').has('ul').each(function() {
       $(this).find('li').next().append('<li><a href="#">My new Tag</a></li>');
     }); 
 

这是一个疯狂的想法...您可以完全使用 CSS 来完成此操作,方法是将 <a> 标签作为父标签 <li>.[=15 中的最后一个子标签=]

#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');