2012-12-21 122 views

回答

9

是的,这是一个正确的希望灒做法。 Selectors Level 3 specification指出以下内容:

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

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

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

所以下面的是,它也是合法的逃避特殊字符和省略报价:

document.querySelector('input[name=test\\[33\\]]') 
+0

太棒了!谢谢你的答案和报告规范 – skyline26

+0

@toPeerOrNotToPeer - 不客气,很高兴我可以帮助:) –

+0

@JamesAllardice是否有任何函数(用户定义)来转义值? 'document.querySelector('[name =''+ escapeattr(value)+'“]')'谢谢 – skyline26