Jquery CSS选择器的工作原理

Jquery CSS选择器的工作原理,jquery,html,css,Jquery,Html,Css,如果我有一个CSS定义为 .grid .data table tr.selected td [class^="icon-"], .grid .data table tr.selected td [class*=" icon-"] { background-image: url("../img/css-sprites.png"); } 它到底是如何工作的?我的意思是,如果满足条件(tr的类被选中,并且它有一个子td,它的任何子元素的类包含名称“icon-”) 我的问题是“到”背景图像将应

如果我有一个CSS定义为

.grid .data table tr.selected td [class^="icon-"], .grid .data table tr.selected td [class*=" icon-"] {
    background-image: url("../img/css-sprites.png");
}
它到底是如何工作的?我的意思是,如果满足条件(tr的类被选中,并且它有一个子td,它的任何子元素的类包含名称“icon-”)


我的问题是“到”背景图像将应用于哪个元素?

每个选择器中的最后一个元素将接收背景url
[class*=“icon-”]
并且
[class^=“icon-”]
css规则将应用于与选择器匹配的每个元素。因此,每个元素的类名以
图标-
开头,并带有指定的父元素,将获得该背景图像

另外,请注意有两条规则,用逗号分隔:

.grid .data table tr.selected td [class^="icon-"],
.grid .data table tr.selected td [class*=" icon-"]
多个选择器意味着一个或另一个需要匹配才能应用规则

属性匹配选择器
^=
表示“以开头”<代码>*=表示“包含”。请按照第一条评论的链接,了解有关特定类型选择器的更多信息:(谢谢)

这也是一个很好的解读:

什么时候背景图像将应用于所有的应用程序 当我们使用
(逗号)来指定选择器时,我们说
…这个,这个和这个将具有相同的样式
,或者换句话说,这些逗号分隔的元素将具有相同的指定样式,因此样式将应用于每个元素

Wehn将背景图像应用于一个元素 由于您问题中的代码在元素之间并没有逗号,所以您正在连续定义彼此的子元素,所以您指定的最后一个子元素是
td[class*='icon-]
,所以所有包含
icon-
字母的类的tds都将获得应用于它们的样式。

“^=” 在这种情况下,将样式应用于具有从
图标-
开始的
类的元素,并且是
td
子元素,该子元素是

"*="
逗号后面的
“*=”
部分定义了任何类,其中包含
“icon-”
,以及
td
child
,并且您各自的树适用于样式

,您在这里错过了什么还不清楚。它是一个很长(而且很昂贵)的选择器,但这里没有陷阱。对于具有类的元素
class^=“icon-”
。这与jQuery有什么关系?它将应用于
td
中的所有元素
tr中的元素。选中的
元素在。。(等)。。其类包含
图标-
。第一个选择器表示class属性以
图标-
开头,第二个选择器表示class属性包含`icon-
,因此带有`class=“foo icon bar”
的内容将在trueJquery使用时进行测试:-“注意,我消除了额外的空白。”不,不要这样做。谢谢,我编辑了我的帖子