2012-02-03 8 views
5

मैंने अभी YUI2 से YUI3 पर स्विच किया है। तो, YAHOO.util.Dom.get(ID_OF_ELEMENT) का उपयोग करने के बजाय, मैंने Y.one('#ID_OF_ELEMENT)' का उपयोग करने का प्रयास किया। यह आईडीimg123 के साथ एक div के लिए ठीक काम करता है, लेकिन 123img या के साथ नहीं।वाईयूआई आईडी विधि द्वारा तत्व प्राप्त करता है जो संख्यात्मक प्रारंभिक आईडी के लिए काम नहीं कर रहा है

मैंने Y.all का उपयोग करने का भी प्रयास किया लेकिन यह काम नहीं किया। यूयूआई का उपयोग करते हुए, इसे बनाने के लिए मुझे एकमात्र तरीका मिला, Y.DOM.byId (alternative in YUI forum के रूप में दिखाया गया) का उपयोग कर रहा था।

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

मैं अकेला का उपयोग नहीं कर सकता है केवल Y.DOM.byId क्योंकि मैं जरूरत के रूप में सामग्री है हेरफेर करने के लिए:

मैं तो क्या किया आखिरी साथ तत्व हड़पने और पहले से नोड मिलता है, इस तरह के लिए गया था एक नोड

तो, क्या केवल Y.one का उपयोग करने का कोई तरीका है? क्या यह एक यूयूआई बग है?

मैंने YUI forum entry पर एक टिप्पणी की है, क्योंकि मुझे नहीं पता कि यह वास्तव में एक बग है जिसे मैं YUI bug reporting tool भर सकता हूं।

उत्तर

8

आप HTML4 का उपयोग करते हैं:

आईडी और नाम टोकन एक पत्र के साथ शुरू होगा ([a-zA-z]) और पत्र के किसी भी संख्या के द्वारा पीछा किया जा सकता है, अंक ([0-9]), हाइफ़न ("-"), अंडरस्कोर ("_"), कोलन (":"), और अवधि ("।")।

this link भी देखें।

=== अद्यतन ===

एचटीएमएल 5 के लिए:

अपने उदाहरण में yui ब्राउज़रों देशी क्वेरी चयनकर्ता कॉल Y.one(...) का उपयोग कर: querySelector(selector) (here देखें)।
लेकिन सभी ब्राउज़र्स क्वेरी नहीं है चयनकर्ता फ़ंक्शन सभी स्वीकृत HTML5 id एस स्वीकार करते हैं। जैसे firfox10 मूल क्वेरी चयनकर्ता id एस के लिए प्रारंभिक अंक के साथ विफल रहता है (विभिन्न ब्राउज़रों में this example आज़माएं)।
क्यों? मोज़िला चयनकर्ताओं के लिए CSS2.1 विनिर्देशन का उपयोग करता:
मोज़िला links in his querySelector documentation चयनकर्ता एपीआई स्तर 1.
first chapter "Abstract" में:

चयनकर्ता, जो व्यापक रूप से सीएसएस में किया जाता है, कर रहे हैं पैटर्न है कि में तत्वों के खिलाफ मेल खाते हैं एक वृक्ष संरचना [SELECT] [सीएसएस 21]।

वहाँ chapter 6.5 "ID selectors" में Selectors Level 3 करने के लिए [SELECT] लिंक और:

...
एक आईडी चयनकर्ता एक "संख्या चिह्न" शामिल हैं (U + 0023, #) तुरंत बाद आईडी मान द्वारा, जो CSS identifiers होना चाहिए।
...

जुड़ा हुआ css2.1 identifiers specification से:

सीएसएस में, पहचानकर्ता (तत्व नाम, वर्ग, और चयनकर्ताओं में ID शामिल हैं) केवल वर्ण हो सकते हैं [एक करने के लिए जेडए-जेड 0 9] और आईएसओ 10646 वर्ण यू +00 ए 0 और उच्चतर, साथ ही हाइफ़न (-) और अंडरस्कोर (_); वे अंक, दो हाइफ़न या एक हाइफ़न के साथ एक अंक के साथ शुरू नहीं कर सकते हैं। पहचानकर्ताओं में भागने वाले वर्ण और किसी भी आईएसओ 10646 वर्ण को संख्यात्मक कोड के रूप में भी शामिल किया जा सकता है (अगला आइटम देखें)। उदाहरण के लिए, पहचानकर्ता "बी & डब्ल्यू?" "बी \ & डब्ल्यू \" के रूप में लिखा जा सकता है या "बी \ 26 डब्ल्यू \ 3 एफ"।

=== अद्यतन ===

आप चयनकर्ता [id="123"] निम्न का उपयोग कर सकते हैं। उदा .:

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

this example भी देखें।

+1

यह HTML4 है, HTML5 नहीं। एलिमेंट आईडी संख्याओं से शुरू हो सकती है या HTML5 में पूरी तरह से संख्यात्मक हो सकती है। http://dev.w3.org/html5/spec/Overview.html#the-id-attribute –

+0

मैं भूल गया, ठीक है, आपकी टिप्पणी जोड़ दी। – scessor

+0

ठीक है, जो चीजों को समझाता है। तो, मुझे लगता है कि YUI3 को HTML5 spec का समर्थन करना चाहिए। यह वास्तव में एक मामला है क्योंकि कई वेबसाइटें संख्यात्मक-केवल या संख्यात्मक-प्रारंभिक आईडी का उपयोग कर सकती हैं। इस विशिष्ट व्यक्ति पर मैं काम कर रहा हूं, मैं उस तथ्य को नियंत्रित नहीं कर सकता। और उस तरह के हैक का उपयोग काफी बदसूरत है। – lucasarruda

संबंधित मुद्दे