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

我有一些HTML如下:

Text I'm interested in Other crap I don't care about  

我希望获得跨度“A”的文本内容,不包括任何嵌套标签(即上例中的跨度“B”的内容)。 我正在尝试获取文本内容,而不是HTML内容。 另外,在我的特定情况下,我知道在任何其他标签之前,span A中总会有一些文本,但我也对这种约束较少的解决方案感兴趣。

我考虑过的简单而笨重的方法只是做$(“#A”)。html()然后解析直到我点击未转义的“<”,但感觉应该有一个更清洁的解决方案。

我很确定没有内置的方法来做到这一点 – 虽然你可以寻找一个插件,它可能存在。 其他人发布了.text()方法(但删除了post),它会给你所有的文字,减去标签,这意味着你会得到“文字我对其他垃圾我不感兴趣” – – 不是你想要的。

编辑

好吧,我觉得我对此感兴趣所以我花了一些时间。 这是解决方案:)

  copyOf = $('#A').clone(); copysKids = copyOf.children(); copysKids.remove(); alert(copyOf.text()); 

我们正在做的是克隆你试图从中获取文本的节点 – 我们不想对原始节点进行操作,因为这会改变页面。 然后我们抓住所有子节点的集合,然后对它们进行核对。 剩下的文本是您要查找的文本。

以下内容应该适合您

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

这是非常具体的问题。 但不确定是否存在通用解决方案

对于OP的具体示例,正确的解决方案是

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

如果你想要一个能够处理前N个子节点中的一个或多个是标签而不是文本节点的情况的强大解决方案,则必须对此进行详细阐述。