2012-01-29 48 views
1

以下选择器的写入方式有什么关系?它validates both waysW3 spec seems silent上的引号问题。双向验证时的“最佳”方式

input[type=text] 

或者

input[type='text'] 

我已经看到了它的工作左右逢源,而只是想知道它总是有效的或者CSS或jQuery的两种方式?

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

我们有两种方法,因为向后兼容性?如果是这样,哪种方式最好呢?

尽管the accepted answer to this other SO question,我想这...

input[type='text'] 
+0

在jQuery中,引号是强制性的。 – 2012-01-29 01:55:31

+0

是关于jQuery或CSS或两者的问题吗?如果这是一个纯粹的CSS问题,考虑到您对jQuery完全不相关的验证问题,这是http://stackoverflow.com/questions/5578845/css-attribute-selectors-the-rules-on-quotes-or -none和http://stackoverflow.com/questions/3851091/do-values-in-css-attribute-selector-values-need-to-be-quoted – BoltClock 2012-01-29 20:33:43

+0

@BoltClock,我真的很感兴趣,因为他们分享很多选择器规则...虽然我的描述集中在CSS上,因为我只假定这是选择器规则的起源。我也承认我从来没有试图在我的jQuery中忽略''''看看会发生什么。 **感谢您**提供额外的阅读材料。 – Sparky 2012-01-29 20:46:10

回答

4

我总结一句话这样说:

  • 对于人物的一些序列(合法的标识符),则不需要引号。
  • 对于所有其他字符序列(如任何以数字开头的任何字符),您必须使用引号。
  • 如果你知道什么构成legal CSS identifier,那就是你所拥有的,你可以不用引号。
  • 如果你知道你所拥有的不是一个标识符,你必须加上引号。
  • 如果您不想考虑它并希望始终如一地使用它,请使用引号。

[type=text],你可以,如果你想因为text是合法的CSS标识符离开过引号。

我个人更喜欢一致性,而不必考虑它,而不是犯错误的机会,所以我总是放在引号中。

1

我会用input[type='text']前进。

+0

您能否详细说明我们拥有这两种方法的原因,以及W3规范中是否有任何确凿的结论。谢谢! – Sparky 2012-01-29 00:24:41

+0

我刚才看了[选择器的CSS级别3](http://www.w3.org/TR/selectors/#attribute-selectors),看来你可以使用其中一种。我个人使用单引号是因为我所有的团队都这样做。我也在我的JavaScript中使用单引号。为了保持一致性,团队统一进行。 – 2012-01-29 00:34:18

3

根据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”。

简而言之,无论哪种方式,这是一个偏好问题。字符串的优点(即引用属性值)是为了保持一致性;每个值都可以表示为一个字符串,但并不是所有东西都可以表示为一个标识符。您可以通过this page运行值来检查您是否需要报价。

+0

谢谢你的出色答案,但我无法弄清楚如何使用你引用的[那个页面](http://mothereff.in/unquoted-attributes)。无论我在框中输入什么内容,它都假定它是用于'href'属性的。我想我不希望它说“'文本”'当它清楚地通过了CSS验证时是无效的。 – Sparky 2012-01-29 01:14:12

+0

该网站预计未引用的属性。你输入的内容等同于'type =“\”text“\”'。它只是用href作为例子 - 价值本身就是被审查的内容,而不是属性。 – Dennis 2012-01-29 02:11:07

相关问题