jquery - 使用 jQuery 选择列表项而不定位子列表项

标签 jquery html

我正在尝试使用 jQuery 定位特定的顶级列表项。然而,其中一些列表项还包含它们自己的嵌套列表,我想忽略它们。

我在这里发现了一个 stackoverflow 问题 Target first level <li>s and not the nested <li>s 关于这个主题,但在制定解决方案后我仍然遇到同样的问题。

HTML:

<div>
  <ul>
    <li data-level="1">
      Upper List Item
      <ul>
        <li>Sub list item</li>
      </ul>
    </li>
    <li data-level="1">List item 2</li>
  </ul>
</div>

Javascript:

$(document).ready(function() {
    $("div > ul > li[data-level=1]").each(function(index){
    console.log(index + ":" + $(this).text());
  });
});

https://jsfiddle.net/o4mw0gd8/3/

最佳答案

问题是您正在从顶级 <li> 内部获取所有文本。

考虑到子级别 <li> 位于顶级 <li> 内部,那么这些文本也位于顶级 <li> 内部...

解决方案1:

您应该将文本放在 <span> 标记内,这样在顶级 <span> 内的 <li>/s 中查找文本会容易得多!

解决方案 2:

在获取 <li> 的文本之前,请删除其中的所有 <ul> 元素,这样您就只能获得顶层 <li> 的文本

JS:

$("ul > li[data-level=1]").each(function(index) {
    var current = $(this).clone();
    current.find('ul').remove();
    console.log(index + ":" + current.text().trim() );
});

Working Fiddle

关于jquery - 使用 jQuery 选择列表项而不定位子列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34417499/

相关文章:

jquery - 无限滚动和回调

javascript - 使用 javascript(或 jQuery)选择和操作 CSS 伪元素,例如::before 和::after

html - 打字效果-css写出完整的文字

html - float :Left on divs not working as it should

html - 我的整个正文和页脚都变成了来 self 的导航栏的链接 (html/css)

javascript - 如何让下拉框生效

javascript - 删除 href 周围文本的正确 jquery 函数是什么?

jquery - 动态添加类名到 Colorbox

javascript - 为什么 Vue.js 使用单字标签 <component>,这违反了他们自己的风格指南?

jquery - 提供 html5 和 CSS3 特性的好库