仅从 div 中选择文本

Posted

技术标签:

【中文标题】仅从 div 中选择文本【英文标题】:Select Only Text From Inside a div 【发布时间】:2013-10-01 19:21:40 【问题描述】:

我有以下html

<td>
<div>
Text I Want<span class="note-comment">Text I Do Not Want</span>
</div>
</td>

此 HTML 不是我的,因此无法更改。是的,我知道将“我想要的文本”包装在一个跨度中是理想的,但它不是我的。

使用 CSS 选择器,我需要获得“我想要的文本”,而无需选择 span 节点。我尝试了:first-child,但没有成功。

如果绝对不可能使用 CSS 选择器,有没有办法使用 XPath(我假设使用 text())?

【问题讨论】:

尝试通过class id $('.note-comment').remove() 移除span 并用jquery $('#find_a_way_to_div').html() 获取div的内容跨度> @AdrianP。我对 CSS 选择器感兴趣,而不是 javascript/jquery。 在 CSS 中是不可能的;你不能编写依赖于文本内容的选择器。 您要应用什么特定的 CSS 样式?这可能,虽然可能不会,有所作为。 【参考方案1】:

使用 CSS 选择器是绝对不可能的。 CSS 选择器很少选择文本(::first-line::first-letter 伪元素除外)。

为什么不选择&lt;div&gt; 并获取它的firstChild?无论如何,XPath 类似于//td/div/text()[1]

【讨论】:

我对 javascript 的实现方式不感兴趣,只对 CSS 感兴趣。我试过一线,但没有用。 @SantaClaus:那是因为它不是第一行。使用 CSS 是不可能的。如果你只对 CSS 感兴趣,为什么要问 XPath? (另外,这不是 JavaScript 的做法,这只是 DOM 的做法。如果你觉得其中任何一种都没有帮助,我需要一些上下文。) 嗯,有一个 php 库使用 CSS 选择器来查找网页上的某些内容。这就是我的背景。但是,如果我能弄清楚如何使用,您也可以使用 xpath,但那是我的问题。 @SantaClaus:我也给出了 XPath 查询...? 另外,应该有一些方法可以从您的 PHP 库中获取 firstChild。如果名字好的话,它甚至可能被称为。【参考方案2】:

在 css 中不可能,但在程序中很容易。

如在javascript中:

text.split('&lt;')[0]

【讨论】:

以上是关于仅从 div 中选择文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery 进行垂直选择

多行文本文本输入框 textarea 可点击任意地方编辑

如何用浏览器打开用记事本编写的代码

发送文本和 HTML 电子邮件 - 为啥 Gmail 总是选择文本版本?

仅从分组依据中选择一行?

QT中怎样读取中文文本文件!