2013-05-14 47 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

相关问题