带或不带引号的属性选择器?

Spa*_*rky 2 css jquery css-selectors jquery-selectors

下面的选择器以哪种方式编写有关系吗?它验证了两种方式,并且W3C 规范似乎对引号问题保持沉默。

选项1:

input[type=text]
Run Code Online (Sandbox Code Playgroud)

选项2:

input[type='text']
Run Code Online (Sandbox Code Playgroud)

我见过带引号和不带引号的选择器。这两种方法都适用于 CSS 或 jQuery 吗?

那么,使用引号只是一个偏好问题吗?语义?CSS 版本?

由于向后兼容性,我们有两种方法吗?如果是这样,哪条路是最好的发展方向?

尽管对其他问题的答案已被接受,但我认为引用是最好的:

input[type='text']
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 6

我会这样总结:

  • 对于某些字符序列(合法标识符),不需要引号。
  • 对于所有其他字符序列(例如以数字开头的任何字符),必须使用引号。
  • 如果您知道什么构成了合法的 CSS 标识符并且这就是您所拥有的,则可以省略引号。
  • 如果您知道您拥有的不是标识符,则必须放入引号。
  • 如果您不想考虑它并希望始终一致地执行此操作,请使用引号。

对于[type=text],您可以根据需要省略引号,因为text是合法的 CSS 标识符。

我个人更喜欢一致性,不需要考虑它,而且犯错误的机会也更少,所以我总是加上引号。


Den*_*nis 5

根据 CSS 规范(版本23):

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

字符串用双引号或单引号 ,[type="text"]而标识符[type=text], 定义如下:

在 CSS 中,标识符(包括选择器中的元素名称、类和 ID)只能包含字符 [a-zA-Z0-9] 和 ISO 10646 字符 U+00A0 及更高版本,加上连字符 (-) 和下划线 ( _); 它们不能以数字、两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何 ISO 10646 字符作为数字代码(请参阅下一项)。例如,标识符“B&W?” 可以写成“B\&W\?” 或“B\26 W\3F”。

简而言之,无论哪种方式,都取决于偏好。字符串(即引用属性值)的优点是一致性;每个值都可以表示为字符串,但并非所有值都可以表示为标识符。您可以通过此页面运行值来检查是否需要报价