jquery - 选择列出一个项目(如果它有子列表)

标签 jquery jquery-selectors

我有一个链接列表。如果父级我需要在链接中附加一些内容 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

最佳答案

这是一个疯狂的想法...您可以通过定位 <a> 来纯粹使用 CSS 来完成此操作不是其父级中最后一个子级的标签 <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');

关于jquery - 选择列出一个项目(如果它有子列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284465/

相关文章:

jquery - 如何列出与 Jquery 对象关联的方法

javascript - 使用 jquery 显示进程(或等待)光标不工作

jquery - 从模型的输入中获取值(value)

javascript - 检查所选元素是否包含属性

javascript - 定位多个相似项目组中的事件

JQuery按名称选择问题

jQuery 选择器 : Id Ends With?

javascript - jQuery 选择器仅第一级 div

javascript - 在 AJAX 调用后显示 php 结果,无需重新加载页面

jQuery 是 (':visible' )表现得很有趣。