24

假设我有以下内容:

<div data-pid="">Unknown</div>
<div data-pid="123">Known 123</div>

CSS中有没有办法只选择data-pid属性非空的元素?

4

3 回答 3

40

如果您不介意稍微向后做一些事情并且您需要它在不支持的浏览器中工作,这很有效:not

div[data-pid] {
    color: green;
}

div[data-pid=""] {
    color: inherit;
}

这将使所有div具有非空data-pids 的 s 变为绿色。

在这里小提琴:http: //jsfiddle.net/ZuSRM/

于 2013-05-07T22:06:43.273 回答
37

看起来很难看,但应该这样做:

[data-pid]:not([data-pid=""])

jsFiddle 演示

如果您需要支持较旧的浏览器,您还可以使用一点 Javascript 添加类。

于 2013-05-07T22:03:11.857 回答
6
/* Normal styles */
[data-pid] {}

/* Differences */
[data-pid=""] {}

js小提琴

这将有更好的浏览器支持。不要选择您想要的,而是将它们全部设置样式,然后将差异放在第二个选择器中。

于 2013-05-07T22:06:49.793 回答