[英]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為 img123的div ,但不適用於123img或123 。
我也試過使用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.