2013-02-17 170 views
-4

我想选择很多不同的ID和类。例如:css选择很多ID类

<div id="a b c d" class="e f g h i j ">Red text</div> 
#a.#b.#c.#d.e.f.g.h.i.j{color:red;} 

也试过:

#a#b#c#d.e.f.g.h.i.j{color:red;} 

的jsfiddle:http://jsfiddle.net/vHvm9/

这是行不通的。 CSS不支持这么多选择,还是我做错了什么?

+9

一个元素不能有多个ID。 – 2013-02-17 17:30:32

+0

* ID *使元素**唯一**所以你的多ID设计没有任何意义..反正元素不能有多个* ID * – vlcekmi3 2013-02-17 17:31:11

+1

最后,你不必命名元素的_all_类到选择它。所以在你的例子中,例如按类“e”选择就足够了:'.e {color:red;}'。只有当你必须更精确时,才需要更精确的选择器。 – arkascha 2013-02-17 17:34:31

回答

3

就CSS而言,您的第二个选择器#a#b#c#d.e.f.g.h.i.j有效,理论上可以匹配CSS中具有多个ID的元素。但是,只有当DOM实际上允许元素拥有许多ID时,这才会起作用。在HTML中,空格不像分类名称那样分隔ID名称;一个HTML元素最多只能有一个由id属性指定的ID,并且该ID不应该包含空格(即使浏览器会很乐意接受它,如果您为此提供了如此糟糕的标记)。

您仍然可以通过其他方式将其他ID分配给单个元素(同样,如果DOM允许),但绝对没有实际的理由,除非您使用某种不明确的标记语言,而多个ID意味着一些东西。

所以,要回答你的问题:你做错了什么是试图分配多个ID到一个元素。只需分配一个没有任何空格的ID,然后按该ID进行选择。

2

正如Jan指出,单个元素不能在HTML或XML中具有多个ID。

但是,如果你会发现,支持多个ID,那么你应该用正确的CSS选择器的主机语言(CSS):

#a#b#c#d.e.f.g.h.i.j{color:red;} 
+0

不知道这是你真正想要表达的。这个例子说明元素必须具有所有的id和所有的类,如选择器中提到的那样。 – arkascha 2013-02-17 17:37:37

+0

@arkascha:'div#c'但不是'div#c' – 2013-02-17 17:40:29

+0

对不起,不能跟着你那里... – arkascha 2013-02-17 17:47:50