【问题标题】:The "best" way when both ways validate两种方式都有效时的“最佳”方式
【发布时间】:2012-02-21 09:59:58
【问题描述】:

以下选择器的编写方式是否重要?那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']

【问题讨论】:

  • 在 jQuery 中,引号是强制性的。
  • 您的问题是关于 jQuery 还是 CSS 或两者都有?如果这是一个纯 CSS 问题,考虑到您对 jQuery 完全不相关的验证的担忧,这是 stackoverflow.com/questions/5578845/…stackoverflow.com/questions/3851091/… 的副本
  • @BoltClock,我对两者都很感兴趣,因为它们共享许多选择器规则……尽管我的描述集中在 CSS 上,因为我只假设这是选择器规则的起源。我还要承认我从来没有试图在我的 jQuery 中省略 ' ' 来看看会发生什么。 感谢您提供额外的阅读材料。
  • 我在 Evernote 中有一个关于 jQuery 和 CSS 选择器差异的问答草稿......也许我应该继续发布它。
  • @BoltClock,即使没有其他人这样做,我也会很高兴看到这一点。

标签: jquery css jquery-selectors css-selectors


【解决方案1】:

我会这样总结:

  • 对于某些字符序列(合法标识符),您不需要引号。
  • 对于所有其他字符序列(例如以数字开头的任何字符),您必须使用引号。
  • 如果您知道legal CSS identifier 的组成部分并且您已经掌握了这些信息,则可以省略引号。
  • 如果您知道您拥有的不是标识符,则必须加上引号。
  • 如果您不想考虑它并希望始终如一地做,请使用引号。

对于[type=text],如果您愿意,可以去掉引号,因为text 是合法的CSS 标识符。

我个人更喜欢一致性,不必考虑它,也不太可能犯错,所以我总是加上引号。

【讨论】:

    【解决方案2】:

    根据 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 运行值来检查您是否需要引号。

    【讨论】:

    • 感谢您的出色回答,但我不知道如何使用您引用的that page。无论我在框中输入什么,它都假定它适用于href 属性。我想我没想到它会说 "text" 在它明显通过 CSS 验证时是无效的。
    • 该站点需要一个未引用的属性。您输入的内容相当于type="\"text"\"。它只是使用 href 作为示例 - 值本身是正在检查的内容,而不是属性。
    【解决方案3】:

    以后我会使用input[type='text']

    【讨论】:

    • 您能否详细说明我们同时使用这两种方法的原因,以及 W3 规范中是否对此有任何决定性的内容。谢谢!
    • 我刚刚查看了CSS Level 3 for Selectors,看来您可以使用其中任何一个。我个人使用单引号,因为我工作过的所有团队都这样做。我还在我的 JavaScript 中使用单引号。为了保持一致性,团队统一执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多