16

我应该如何转义 css/js 属性选择器中的属性[attr=value]

具体来说,这是正确的吗?

document.querySelector('input[name="test[33]"]')

我正在寻找执行此操作的“标准方式”(如果有),因为我不希望 Sizzle 使用执行繁重的后备功能

4

1 回答 1

14

是的,这是一种正确的方法。Selectors Level 3 规范规定如下:

属性值必须是 CSS 标识符或字符串。

您问题中的示例使用字符串作为属性值。“标识符”定义如下:

在 CSS 中,标识符...只能包含字符 [a-zA-Z0-9] 和 ISO 10646 字符 U+00A0 及更高,加上连字符 (-) 和下划线 (_);它们不能以数字、两个连字符或一个连字符后跟一个数字开头。标识符还可以包含转义字符和任何 ISO 10646 字符作为数字代码...

因此,在此之后,转义特殊字符并省略引号也是合法的:

document.querySelector('input[name=test\\[33\\]]')
于 2012-12-21T10:04:58.547 回答