我刚刚从YUI2切换到YUI3.所以,YAHOO.util.Dom.get(ID_OF_ELEMENT)我尝试使用而不是使用Y.one('#ID_OF_ELEMENT)'.它工作正常的一个DIV与ID img123,但不能与123img或123.
我也尝试使用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.
如果你使用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)
另请参见此示例.