仅从 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
伪元素除外)。
为什么不选择<div>
并获取它的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('<')[0]
【讨论】:
以上是关于仅从 div 中选择文本的主要内容,如果未能解决你的问题,请参考以下文章