基于元素文本的CSS选择器?

241
有没有一种方法可以根据元素文本在CSS中选择元素?
比如:

ie:

li[text=*foo]

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

那可能不起作用。

编辑:还只需要支持Chrome浏览器。

3个回答

141

我知道这不完全是你要找的,但或许能帮到你。

你可以尝试使用 jQuery 选择器 :contains(),添加一个类,然后为该类设定样式。


10
这对我很有用。最终使用类似以下的代码:$("div:contains('文本')")      .closest("div.parent_div")      .css("background", "#555"); - JoshP
40
不,它不应该标记为答案。问题要求一个CSS选择器,而这个答案是jQuery选择器,两者完全不同,并添加了使用jQuery的依赖性。适当的CSS选择器不需要任何特殊库,只需要浏览器符合CSS和DOM标准即可。 - uchuugaka
2
难以置信的是,在Rails单元测试中,这个语句是可行的:assert_select '.text-muted:contains("Total Raised")', 'Total Raised'。http://guides.rubyonrails.org/v5.0/testing.html#testing-views 我没想到它会生效,因为我认为单元测试使用的是Ruby CSS选择器,而不是JQuery。 - Chloe

93

不能直接用CSS,你可以基于内部内容通过JavaScript设置CSS属性,但最终仍需要在CSS的定义中操作。


7
尝试使用:empty CSS选择器。对我很有效。 - Dmitrii Malyshev
1
@DmitriiMalyshev :empty选择器的描述链接:https://www.w3schools.com/cssref/sel_empty.asp - sebisnow

14

23
这可能会让人感到困惑。所描述的选择器是基于元素中的类而不是其中的文本。是的,它说“您将需要使用其他标记”,但只是匆忙浏览的话,很容易被忽略。 - krillgar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接