基于元素文本的 CSS 选择器? [复制]

Posted

技术标签:

【中文标题】基于元素文本的 CSS 选择器? [复制]【英文标题】:CSS selector based on element text? [duplicate] 【发布时间】:2011-07-23 10:29:36 【问题描述】:

有没有办法根据元素文本在css中选择一个元素?

即:

li[text=*foo]

<li>foo</li>
<li>bar</li>

这可能行不通。

编辑:也只需要支持Chrome即可。

【问题讨论】:

【参考方案1】:

我知道这不是您正在寻找的,但也许它会对您有所帮助。

你可以尝试使用 jQuery 选择器:contains(),添加一个类,然后为一个类做一个普通的样式。

【讨论】:

这对我有用。最终使用了类似的东西:$("div:contains('Text')") .closest("div.parent_div") .css("background", "#555"); @dineshygv 不,不应将其标记为答案。该问题要求使用 CSS 选择器。这个答案是一个完全不同的 jQuery 选择器,它增加了使用 jQuery 的依赖。正确的 CSS 选择器不需要任何特殊的库,只需符合浏览器的 CSS 和 DOM 标准。 令人难以置信的是,这在 Rails 单元测试中有效assert_select '.text-muted:contains("Total Raised")', 'Total Raised'。 guides.rubyonrails.org/v5.0/testing.html#testing-views 我没想到会这样,因为我认为单元测试使用的是 Ruby CSS 选择器,而不是 JQuery。【参考方案2】:

不直接用CSS,你可以根据内部内容通过javascript设置CSS属性,但最终还是需要在CSS的定义中操作。

【讨论】:

试试 :empty css 选择器。为我解决了。 @DmitriiMalyshev 链接到:empty 选择器的描述:w3schools.com/cs-s-ref/sel_empty.asp【参考方案3】:

可能已经讨论过了,但从 CSS3 开始,就没有你需要的东西了(另见“Is there a CSS selector for elements containing certain text?”)。 您将不得不使用额外的标记,如下所示:

<li><span class="foo">some text</span></li>
<li>some other text</li>

然后按照通常的方式引用它:

li > span.foo ...

【讨论】:

这可能会造成混淆。所描述的选择器脱离了元素的类,而不是其中的文本。是的,它说“你将不得不使用额外的标记”,但粗略一瞥,很容易被忽略。

以上是关于基于元素文本的 CSS 选择器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用css选择器从元素中获取文本,不包括嵌套元素内的文本

为啥嵌套 CSS 选择器是自下而上应用的? [复制]

2、css 选择器

css选择器

CSS学习总结

CSS学习总结