JQuery:获取不包括嵌套标记的标记内容

JQuery:获取不包括嵌套标记的标记内容,jquery,text,jquery-selectors,css-selectors,nested,Jquery,Text,Jquery Selectors,Css Selectors,Nested,我有一些HTML,如下所示: <span id="A">Text I'm interested in <span id="B">Other crap I don't care about</span> </span> 我感兴趣的文本 其他我不在乎的废话 我希望得到span“A”的文本内容,不包括任何嵌套标记(即上面示例中span“B”的内容)。我试图获取文本内容,而不是HTML内容。另外,在我的特殊情况下,我知道在任何其他标记之前,span

我有一些HTML,如下所示:

<span id="A">Text I'm interested in
  <span id="B">Other crap I don't care about</span>
</span>
我感兴趣的文本
其他我不在乎的废话
我希望得到span“A”的文本内容,不包括任何嵌套标记(即上面示例中span“B”的内容)。我试图获取文本内容,而不是HTML内容。另外,在我的特殊情况下,我知道在任何其他标记之前,span A中总会有一些文本,但我也对约束较少的解决方案感兴趣


我考虑过的一种简单但笨拙的方法是,只需执行$(“#A”).html(),然后进行解析,直到找到一个未经scaped的“,以下内容应该可以为您提供

$("#A").find("#B").remove().end().text());

这是针对您的问题的。不确定是否有一个通用的解决方案,但我相当确定没有内置的方法来实现这一点-虽然您可以查找插件,但它可能存在。其他人发布了.text()方法(但删除了帖子),该方法将获得所有文本,减去标记,这意味着您将获得““我对其他我不在乎的垃圾感兴趣”——不是你想要的

编辑

好吧,我决定对此感兴趣,所以我花了一些时间。解决方案如下:)


我们正在做的是克隆您试图从中获取文本的节点-我们不希望对原始节点进行操作,因为这会改变页面。然后我们将获取所有子节点的集合,并对其进行nuking。剩余的文本是您正在查找的文本。

对于OP的特定示例,正确的解决方案是应该是

$('#A').prop('firstChild').nodeValue

如果您想要一个健壮的解决方案来处理前N个孩子中的一个或多个是标记而不是文本节点的情况,那么必须对此进行详细阐述。

他不想要第二个跨度的内容,因此这不起作用,因为它提供了该跨度内的所有纯文本,这一点也让我挠头。请参阅我的修订版上面的解决方案:)+1-我想这是正确的答案,我正要去那里,但由于懒惰,我决定不去。我以为会有某种“集减法”“解决方案,但我不熟悉jQuery。这完全符合要求。谢谢在大型节点树的情况下,这将非常庞大,但它可以工作。DB的一个简要说明-我刚刚意识到,因为这样可以去掉所有子节点。。。如果里面有,比如说,粗体文字。。。该文本也将被删除,因为它是一个子标签。在决定删除或不删除之前,你可以反复查看copysKids,看看它们是什么标签。这是一个很好的观点,Erik。我没有想到这一点,但谢天谢地,在我实际应用这一点时,这不会是一个问题。
$('#A').prop('firstChild').nodeValue