如何获取两个元素之间的文本?

7
<div class="container">
  <a href="#" class="link">asd</a>
  [I want get this text]
  <a href="#" class="link">asd</a>
  Anouther text i dont need.
</div>

我该如何提取 <span> 元素之间的文本(而不是元素内的文本,在这种情况下我应该得到 "[I want get this text]")?

1
文本块也是DOM树中的节点,并且会显示为div.container的childNodes的一部分。 - Marc B
firstAnchor.nextSibling.data 是指向第一个 A 元素的引用。 - Šime Vidas
谢谢马克,我没想到纯文本也是DOM中的一个节点。 - Fisher
2个回答

9

演示

我认为最简单的方法是处理本地DOM元素:

var a = $(".container a")[0];
var textNode = a.nextSibling;
var text = textNode.textContent;

请注意,var text = textNode.nodeValue; 也可以使用,但我不确定哪种方法更好。

如果你想要的文本在两个节点之间有多个节点,这段代码就不适用了。在我这种情况下,文本中有一些<br>标签,这个代码只会读取到第一个<br>标签为止。 - user3064538

-1
一种方法是将部分内容放在 span 标签中,并获取 span 的内容:
<div class="container">
      <a href="#" class="link">asd</a>
      <span id="i_want_this">[I want get this text]</span>
      <a href="#" class="link">asd</a>
      Anouther text i dont need.
</div>

myVal = $("#i_want_this").html();

5
如果我能做到这一点,我就不会问这个问题了;] - Fisher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接