jquery - 获取 li 的文本值(嵌套项中没有文本)

标签 jquery dom html-lists

<ul>
  <li class="item-i">AI</li>
  <li class="item-ii">AII
    <ul class="level-2">
      <li class="item-a">A</li>
      <li class="item-b">B</li>
      <li class="item-c">C</li>
    </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

如何获取值AI AII A B C III

到目前为止我尝试过的内容如下:

$(document).ready(function() {
    $('li').each(function(index) {
     alert($(this).text());
    });
});

但它没有给我所需的结果。当它到达“item-ii”时,它给出了所有结果。

我想要一件一件的元素。

最佳答案

$(function(){
  var text = $('li').map(function(){
    return $(this).contents().map(function(){
      return this.nodeType==3 ? this.nodeValue : "";
    }).get().join('');
  }).get().join(' ');
  console.log(text);
  // AI AII
  //
  //     A B C III
});

contents()方法为您提供文本节点和子节点。文本节点的 nodeType3。对于较少“功能”风格的代码,请尝试以下操作:

$(function(){
  $('li').each(function(){
    $(this).contents().each(function(){
      if (this.nodeType==3){
        console.log(this.nodeValue.replace(/^\s+|\s+$/g,''));
      }
    });
  });
  // AI
  // AII
  // 
  // A
  // B
  // C
  // III
});

请注意,由于标记,仍然存在空白文本节点。

关于jquery - 获取 li 的文本值(嵌套项中没有文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623169/

相关文章:

python - DOM相关问题

css - Chrome 中的 OL 编号未左对齐,出现在右侧

html - 如何修复我的列表,这样我就不必在图标更新前切换两次?

javascript - URL 重定向,但无法将其保存在浏览器历史记录中。

javascript - 页面加载时的 Charts.js 渲染问题

javascript - JQuery:如何将类应用于表中该行内单选按钮的特定数据onclick

jquery - 使用 jquery 获取前一个 p 标签来更改背景

javascript - jQuery .getJSON 失败,语法错误?

javascript - 正在为如何刷新事件监听器而烦恼吗?

jquery - 如何通过从 $.ajax() 检索的 DOM 访问元素?