YUI通过id方法获取元素不适用于数字起始id

luc*_*uda 5 javascript yui

我刚刚从YUI2切换到YUI3.所以,YAHOO.util.Dom.get(ID_OF_ELEMENT)我尝试使用而不是使用Y.one('#ID_OF_ELEMENT)'.它工作正常的一个DIVID img123,但不能与123img123.

我也尝试使用Y.all但它没有用.我发现使用YUI的唯一方法就是使用Y.DOM.byId(在YUI论坛中作为替代方案显示).

所以我做的是用最后一个获取元素并首先得到Node,如下所示:

Y.one(Y.DOM.byId(ID_OF_ELEMENT)).append(SOME_HTML_CONTENT);
Run Code Online (Sandbox Code Playgroud)

我不能单独使用只Y.DOM.byId因为我需要将其内容作为节点来操纵.

那么,有没有办法只使用Y.one这是一个YUI的错误吗?

我已经对YUI论坛条目发表评论,因为我不知道这是否真的是一个我可以填写YUI bug报告工具的bug.

sce*_*sor 8

如果你使用html4:

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(" - "),下划线("_") ,冒号(":")和句号(".").

另见此链接.

===更新===

对于html5:

在您的示例中使用Y.one(...)yui调用浏览器本机查询选择器:( querySelector(selector)请参阅此处).
但并非所有浏览器querySelector函数都接受所有允许的html5 id.例如,对于id具有起始数字的s,firfox10本机查询选择器失败(在不同的浏览器中尝试此示例).
为什么?Mozilla对选择器使用CSS2.1规范:他的querySelector文档中的
Mozilla 链接到Selectors API Level 1.
第一章"Abstract"中:

在CSS中广泛使用的选择器是与树结构中的元素匹配的模式[SELECT] [CSS21].

[SELECT]链接到选择器3级,有在第6.5章"ID选择":

...
ID选择器包含一个"数字符号"(U + 0023,#),后面紧跟ID值,该值必须是CSS标识符.
...

从链接的css2.1标识符规范:

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

===更新===

您可以使用以下选择器[id="123"].例如:

YUI().use('node', function (Y) {
    Y.one('[id="123"]').on("click", function (e) {
        alert("Hello World!");
    });
});
Run Code Online (Sandbox Code Playgroud)

另请参见此示例.