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

时间:2012-02-03 19:50:50

标签: javascript yui

我刚刚从YUI2切换到YUI3。因此,我尝试使用YAHOO.util.Dom.get(ID_OF_ELEMENT)而不是Y.one('#ID_OF_ELEMENT)'。对于带有 id img123 div ,它可以正常工作,但不适用于 123img 123

我还尝试使用Y.all,但它没有用。在我使用YUI时,我发现使其工作的唯一方法是使用Y.DOM.byId(显示为alternative in YUI forum)。

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

Y.one(Y.DOM.byId(ID_OF_ELEMENT)).append(SOME_HTML_CONTENT);

我不能单独使用Y.DOM.byId,因为我需要将其内容操作为 Node

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

我已对YUI forum entry发表评论,因为我不知道这是否真的是我可以填写YUI bug reporting tool的错误。

1 个答案:

答案 0 :(得分:8)

如果你使用html4:

  

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

另见this link

=== UPDATE ===

对于html5:

在使用Y.one(...) yui的示例中,调用浏览器本机查询选择器:querySelector(selector)(请参阅here)。
但并非所有浏览器querySelector函数都接受所有允许的html5 id。例如。 firfox10本机查询选择器对于id的起始数字失败(在不同的浏览器中尝试this example)。
为什么? Mozilla对选择器使用CSS2.1规范:
Mozilla links in his querySelector documentation到选择器API级别1.
first chapter "Abstract"

  
    

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

  

[SELECT]Selectors Level 3链接以及chapter 6.5 "ID selectors"中的CSS identifiers

  
    

...
    ID选择器包含一个“数字符号”(U + 0023,#),后面紧跟ID值,该值必须是css2.1 identifiers specification
    ...

  

来自关联的this example

  
    

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

  

=== UPDATE ===

您可以使用以下选择器[id="123"]。 E.g:

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

另见{{3}}。