2011-01-24 50 views

回答

19

:contains()將是一個CSS3選擇器(thanks T.J. Crowder for the link),但因爲它的工作方式往往導致嚴重的性能和過度的選擇問題,它並沒有做到,最有可能的。例如,如果元素E對於給定的字符串參數匹配:contains(),那麼的所有祖先也將匹配;在通用選擇器中使用它會導致某些樣式屬性出現意想不到的結果,除此之外瀏覽器速度較慢。

沒有其他的CSS選擇器可用於:contains()之類的用途。所以你必須找到一些其他的方式,通過修改你的HTML,甚至使用jQuery的:contains(),以達到你想要的效果:

選擇一個h3元素
如果它的第一個孩子的父母
及其文本包含字母'a'。

對於jQuery和硒RC用戶::contains()在由jQuery的,這也是在硒RC中使用的(但不是 webdriver的)中使用的選擇器灒發動機實現。它的工作原理與in this decade-old revision of the CSS3 spec一樣,但是由於規範描述的原因,您需要小心使用它,否則可能會導致意外的選擇。

最後一點,h3:nth-child(1)可以替換爲h3:first-child,它作爲CSS2選擇器有更好的瀏覽器支持。

+0

的確。它將被定義(甚至在[CSS3規範](http://www.w3.org/TR/2009/PR-css3-selectors-20091215/)中有一節,6.6.6節),但事實並非如此。 – 2011-01-24 10:58:25

3

如果你正在嘗試使用:contains(a)找到一個錨標記(而不是字母一個),你可以使用:

h3:nth-child(1) a 

h3:first-child a 
相關問題