为啥“div[class=mncls sbucls]”有效,而“div.mncls sbucls”无效?

Posted

技术标签:

【中文标题】为啥“div[class=mncls sbucls]”有效,而“div.mncls sbucls”无效?【英文标题】:Why does "div[class=mncls sbucls]" work whereas "div.mncls sbucls" doesn't?为什么“div[class=mncls sbucls]”有效,而“div.mncls sbucls”无效? 【发布时间】:2011-08-12 17:21:43 【问题描述】:

以下 Jsoup 语句有效:

 Elements divs = document.select("div[class=mncls sbucls]");

但是等价的说法:

 Elements divs = document.select("div.mncls sbucls");

没用。

为什么?

Jsoup 有空格的类名有问题吗?

【问题讨论】:

【参考方案1】:

类名不能有空格。这是一个 CSS 规范,与 Jsoup 无关。从技术上讲,mncls sbucls 是两个独立的类(mnclssbucls)。

属性选择器有效,因为您选择的是class 属性,其值为mncls sbucls

【讨论】:

【参考方案2】:

空格是后代选择器:

http://www.w3.org/TR/CSS2/selector.html#descendant-selectors

在您的第二个示例中,当您将空格放在那里时,您表示另一个元素/类/选择器,而在您的第一个示例中,您将选择器显式分组为单个字符串(包括空格)。

【讨论】:

以上是关于为啥“div[class=mncls sbucls]”有效,而“div.mncls sbucls”无效?的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 glTranslatef?为啥不直接更改渲染坐标?

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?