【发布时间】:2012-09-18 21:18:41
【问题描述】:
我不喜欢 JSF 如何使用冒号来分隔生成的 HTML 中的 ID,因为它会与 CSS 和 JavaScript 选择器发生冲突。而且我不喜欢总是逃避它的想法。因此,我想用其他字符替换它。有什么缺点吗?有没有常见的替代品?
【问题讨论】:
标签: java javascript html css jsf
我不喜欢 JSF 如何使用冒号来分隔生成的 HTML 中的 ID,因为它会与 CSS 和 JavaScript 选择器发生冲突。而且我不喜欢总是逃避它的想法。因此,我想用其他字符替换它。有什么缺点吗?有没有常见的替代品?
【问题讨论】:
标签: java javascript html css jsf
我不喜欢 JSF 如何使用冒号来分隔生成的 HTML 中的 ID,因为它会与 CSS 和 JavaScript 选择器发生冲突。而且我不喜欢总是逃避它的想法。
然后只按类名选择元素吗? HTML 元素的性质是否真的 如此独特以至于需要通过 ID 来选择?这通常仅适用于主要布局组件。
因此我想用其他字符替换它。有什么缺点吗?有没有常见的替代品?
您可以使用任何您想要的字符,前提是它在 HTML 元素 ID/名称中有效,即 specified,如下所示:
ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0- 9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。
在冒号旁边,唯一合理的选择是连字符、下划线和句点。由于句点本身也是 CSS 选择器中的一个特殊字符,因此它会遇到与冒号相同的问题。所以从逻辑上讲,除了连字符- 和下划线_,你别无选择。
至于缺点,肯定有缺点。您需要确保在 JSF 组件 ID 中的任何位置都不使用新的分隔符,例如<h:someComponent id="foo_bar" />,以防_。这些字符即 JSF 组件 ID 中的 allowed(冒号不是)。它会破坏UIComponent#findComponent() 查找。
【讨论】:
嗯...基于对 javax.faces.SEPARATOR_CHAR 值的简短谷歌搜索
似乎首选值是- 或_(至少对于BalusC)
你只需要保证你不会在 JSF 的任何地方使用它 自己的组件 ID
By default, JSF generates unusable ids, which are incompatible with css part of web standards
【讨论】:
-或_时有什么缺点吗?
: 分隔符正常工作,我正在工作使用大量 jquery 并且从未遇到过 : 的任何问题(不要考虑不时将其转义为真正的问题)