javascript - 如何只获取 <li> 文本而不从 li 中的其他元素获取文本

标签 javascript jquery html list css-position

我有一个 ul 列表,里面有 li,里面有 li 文本和 div . 相同的类被分配给li,而div被分配了不同的类名。

我只想从 li 而不是从 div 获取文本。 这是片段:

$("ul li").on('click', function() {
  $("span").text($(this).text());
});
ul {
  position: relative
}
div {
  position: absolute;
  right: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class='same'>Text1
    <div class='notsame'>Other text</div>
  </li>
  <li class='same'>Text2
    <div class='notsame'>Other text</div>
  </li>
  <li class='same'>Text3
    <div class='notsame'>Other text</div>
  </li>
  </ul>
  <span> </span>

我得到了 O/P,但 div 中的文本也出现了如何避免这种情况?

最佳答案

li 中过滤掉 text 节点 - 请参见下面的演示:

$("ul li").on('click', function() {
  $("span").text($(this).contents().filter(function(){
      return this.nodeType == 3; // select text nodes
  }).text()); // paste all of them to the span
});
ul {
  position: relative
}

div {
  position: absolute;
  right: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class='same'>Text1
    <div class='notsame'>Other text</div>
  </li>
  <li class='same'>Text2
    <div class='notsame'>Other text</div> and more
  </li>
  <li class='same'>Text3
    <div class='notsame'>Other text</div>
  </li>
  </ul>
    <span> </span>

关于javascript - 如何只获取 <li> 文本而不从 li 中的其他元素获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631069/

相关文章:

javascript - JS 中的间隔比较不会爆炸

javascript - 使控制台脚本在 Google Chrome 中持久化

javascript - 如果在表单提交期间未选中复选框,那么它将变为红色

javascript - 使用切换函数在 ngFor 中生成的展开/折叠字段?

html - 提交按钮具有名称属性是否可以接受?

javascript - 启用 SSL 刷新 URL 时出现 React-router 问题

javascript - 遍历JavaScript对象

javascript - 无法使用条件语句停止 javascript 函数?

html - 6 正方形图像占 500px 的 100% 并保持相同大小

html - 输入的高度非常小