2013-05-14 54 views
1

CSS(3)具有後代選擇器,例如, td em {color: red};,但是顯然是no ancestor selector什麼是替代CSS的選擇祖先

那麼,我應該怎麼做而不是像td {border: 1pt solid red} em;這樣的東西?即如何在某個(X)HTML元素的祖先上設置樣式?

注:

  • JavaScript是不相關的解決辦法,東西XPath'y可能。
+0

正如我理解你的例子,如果一個'td'包含'em',那麼你想設置一個'邊界'。這是不可能通過CSS單獨。您是否打開了「解決方法」中的javascript/JQuery解決方案(如您所標記的)?如果是這樣,那麼有一個解決方案。 – ScottS 2013-05-14 14:09:04

+0

重複的http://stackoverflow.com/questions/1251768/css-parent-ancestor-selector。 – 2013-05-15 05:32:46

回答

2

可以等待CSS4選擇來實現,然後做

td! em { 
    border: 1pt solid red; 
} 

http://dev.w3.org/csswg/selectors4/

或者......

var xpathresult = document.evaluate("//td[.//em]", 
    document, null, XPathResult.ANY_TYPE, null); 
while (e=xpathresult.iterateNext()){ 
    e.classList.add("border"); 
} 

https://developer.mozilla.org/en-US/docs/DOM/document.evaluate。普通的瀏覽器支持注意事項適用。

+0

具有exclamantion標記'td'的元素是該規則適用的元素,而不是選擇器'em'最右側的元素。只是不要屏息支持:) – 2013-05-15 05:47:30

相關問題