在CSS中指定多个属性选择器

Joh*_*ohn 268 css attributes css-selectors

做类似的事情的语法是什么:

input[name="Sex" AND value="M"]
Run Code Online (Sandbox Code Playgroud)

基本上,我想选择input具有属性的元素name="Sex"以及属性value="M":

<input type="radio" name="Sex" value="M" />
Run Code Online (Sandbox Code Playgroud)

元件如以下应该没有被选择:

<input type="radio" name="Sex" value="F" />
Run Code Online (Sandbox Code Playgroud)

rai*_*7ow 386

简单input[name=Sex][value=M]会做得很好.它实际上在标准文档中有详细描述:

多个属性选择器可用于引用元素的多个属性,甚至可以多次引用相同的属性.

这里,选择器匹配所有SPAN元素,其"hello"属性具有"Cleveland"值,其"goodbye"属性具有"Columbus"值:

span[hello="Cleveland"][goodbye="Columbus"] { color: blue; }

作为旁注,仅当此值不是有效标识符时,才需要在属性值周围使用引号.

JSFiddle演示

  • 有这样的东西,但OR而不是AND? (5认同)
  • 你的意思是除了`,`(逗号)? (3认同)
  • 你不能写span [hello ="Cleveland"],[goodbye ="Columbus"],但你必须重复一个(可能很长的)部分. (2认同)

小智 54

为了连接它:

input[name="Sex"][value="M"] {}
Run Code Online (Sandbox Code Playgroud)

为了获得工会,它是:

input[name="Sex"], input[value="M"] {}
Run Code Online (Sandbox Code Playgroud)

  • 使用 `:is()` 伪类,您可以减少联合的重复:`input:is([name="Sex"],[value="M"])` (8认同)

Den*_*nis 29

连接属性选择器:

input[name="Sex"][value="M"]
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,至少有一个属性值必须被引用。如果您将其写为“input[name=Sex][value=M]”,即使选择器只有一个不使用引号的属性是有效的,这也会失败。 (2认同)

Jea*_*tin 5

只是要补充一点,选择器和开口支架之间应该没有空间。

td[someclass] 
Run Code Online (Sandbox Code Playgroud)

将工作。但

td [someclass] 
Run Code Online (Sandbox Code Playgroud)

将不会。