如何使用 CSS 2.0 select 或 select 通过在其父元素上设置的属性来 select 一个元素?

How can I select an element by an attribute set on its parent using CSS 2.0 selectors?

我的 QWebView

中有一个这样的 HTML
<div class='a' id='root'>
<div id='x'>...</div>
<p> ...
<p>
...
<div id='x2'>...</div>
<div>
    <a href='go/xxxx'>go</a>
</div>
</div>

我如何select a?我试过这个 selectores:

div[id='root'].a
div[id='root'] + a

但是没有用。代码:

QWebFrame* frame = webView->page()->mainFrame();
QWebElement button = frame->documentElement().findFirst("div[id='root'].a");
assert(!button.isNull()); // gets executed

你可以switch to using XPath 2.0 in Qt有更多的表达自由,但是你需要把你的HTML处理成XML。

要解决,请为 a 添加 descendant selector1。即,将此 div[id='root'].a 更改为:

div[id=root].a a

作为替代方案,如果 Qt 中存在错误,请尝试:

div[id=root][class=a] a

或者(可能更宽一些):

div[id~=root][class~=a] a

最后两个只是备选方案,以防由于某种原因对您的代码的原始修复(添加 a 后代选择器)不起作用。

上面的代码片段不使用带引号的字符串,这是可选的。

1 ) 中看到添加 a,在我原来的(错误的)解决方案之后。感谢他:)

您的 select 或正在 select 使用 ID='root' 和 class='a' 的 div。如果你想 select 那个 div 里面的标签,你需要让你的 select 或者:

div[id='root'].a a

在select的末尾附加'a'or告诉jquery到selectdiv的a里面。