2011-11-29 13 views
7

को कैसे ट्रैक करते हैं, इसके बारे में कुछ प्रश्न मुझे कैसे पता चलेगा कि डोम क्या है और क्या नहीं?jquery selectors dom

$('div p') 

यह इस तरह लगता है सब div तत्व देता है और उसके बाद प्रत्येक डोम तत्व यह है कि पहले div खोज में वापस आ गया था पर पी तत्वों के लिए एक और स्कैन करता है।

$('div .foo') 

कक्षा वाले लोग डोम स्कैन नहीं करते हैं। वे कक्षाओं को शामिल करने वाले तत्वों के लिए केवल पिछली सूची $ ('div') फ़िल्टर करते हैं। यदि $ ('div') के बच्चे के पास कक्षा foo है तो यह चयनित नहीं है।

$('div, div') 

में डुप्लिकेट नहीं है। तो ऐसा लगता है कि लैम्बास की सूची के साथ केवल एक बार स्कैनिंग की जा रही है जो या तो तुलना करता है या नहीं। लेकिन जब आपके पास फ़िल्टर होते हैं तो यह वास्तव में वास्तव में भ्रमित हो जाता है: इसमें ('x') लगता है जैसे वे अपने आप को डोम की पुन: सेवा कर सकते हैं।

तो ये चयनकर्ता कैसे काम करते हैं? क्या 'div .foo' पहले divs के लिए पहले ट्रैवर्स करता है और उसके बाद foo वाले वर्गों के लिए फ़िल्टर करता है, या यह किसी भी तरह से गणना में बदल जाता है जो कहता है कि टैग == Div & & class == foo। जब कई चयनकर्ता होते हैं तो क्या होगा? वे पेज पर दिखाई देने वाले क्रम में दिखाई देते हैं, बिना मुझे डुप्लीज़ महसूस करते हैं जैसे कि यह केवल एक बार डोम स्कैन करता है। हो सकता है कि यह लौटने से पहले बस प्रकार और डुप्लिकेट हटा देता है?

+2

तकनीकी रूप से, '$ ​​(div .foo) '' सभी'। Foo' तत्वों की तलाश करता है, और फिर उन लोगों को फ़िल्टर करें जो 'div' हैं। – Blazemonger

+1

जहां तक ​​अद्वितीय परिणाम जाते हैं - https://github.com/jquery/jquery/blob/master/src/traversing.js#L40 पर एक नज़र डालें। – pimvdb

+3

@ mblase75 नहीं !! यह डीआईवी तत्वों में सभी वर्ग foo की जांच! – TeChn4K

उत्तर

2

jQuery सबसे तेज़ के आधार पर jQuery के चयनकर्ताओं को अनुकूलित करता है। यदि तत्व प्राप्त करने के लिए मूल ब्राउज़र समर्थित विधि है (getElementById आदि) तो यह इसका उपयोग करेगा, अन्यथा यह मूल रूप से समर्थित विधियों के परिणामों के आधार पर फ़िल्टर करेगा।

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