簡體   English   中英

YUI通過id方法獲取元素不適用於數字起始id

[英]YUI get element by id method not working for numeric starting ids

我剛剛從YUI2切換到YUI3。 因此,我嘗試使用Y.one('#ID_OF_ELEMENT)'而不是使用YAHOO.util.Dom.get(ID_OF_ELEMENT) 它適用於id為 img123div ,但不適用於123img123

我也試過使用Y.all但它沒有用。 在我使用YUI的同時,我發現使其工作的唯一方法是使用Y.DOM.byId在YUI論壇中顯示為替代 )。

所以我做的是用最后一個獲取元素並首先得到Node ,如下所示:

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

我不能單獨使用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 ,firfox10本機查詢選擇器失敗(在不同的瀏覽器中嘗試此示例 )。
為什么? Mozilla對選擇器使用CSS2.1規范:
Mozilla 在他的querySelector文檔中鏈接到Selectors API Level 1。
第一章“摘要”中

在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!");
    });
});

另請參見此示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM