2012-04-19 12 views
14

इन दो jQuery कथनों के बीच क्या अंतर है? वे सभी बच्चों को div टैग प्राप्त करके एक ही काम करते हैं।jQuery चयनकर्ताओं में प्रत्यक्ष वंशज (>) बनाम वंशज क्या अंतर है?

$("#mainblock div") 
$("#mainblock > div") 
+3

मैं इस सवाल से असहमत के रूप में "बहुत संकीर्ण बंद किया जा रहा।"हर कोई इन दिनों jquery का उपयोग करता है और मैं शर्त लगाता हूं कि अधिकांश उपयोगकर्ता आपको इस प्रश्न का उत्तर नहीं दे सके। यह कितना संकीर्ण/स्थानीयकृत है? – agmin

उत्तर

16

$("#mainblock > div") के तत्काल बच्चे हैं मिल जाएगा = बच्चे केवल स्तर

$("#mainblock div") = सभी बच्चे + desendents। पदानुक्रम सभी प्रत्यक्ष बच्चे तत्वों "जनक" द्वारा निर्दिष्ट तत्वों की "बच्चा" द्वारा निर्दिष्ट का चयन करता है -

+1

यदि आप जिस नोड को ढूंढ रहे हैं वह मुख्य ब्लॉक का अभिभावक है, इसका उपयोग करने के लिए बेहतर> अधिक सटीक होने के अलावा, यह भी तेज़ है। – Neil

3

पहले एक #mainblock के सभी div रों वंशज मिल जाएगा। दूसरा एक सब div कि #mainblock

2
$("#mainblock div") 

किसी भी div तत्व से मेल खाता है जो #mainblock के वंशज है।

$("#mainblock > div") 

किसी भी div तत्व से मेल खाता है जो #mainblock का बच्चा है।

जांच http://www.w3.org/TR/CSS2/selector.html

1

पहले एक किसी भी div किसी भी स्तर पर `#mainblock 'का एक बच्चा है कि चयन करेंगे। दूसरा कोई भी डिवीजन चुनता है जो तत्काल बच्चा है।

सीएसएस > चयनकर्ता पर अधिक जानकारी के लिए यह देखें jQuery जैसा व्यवहार करता है।

3
$("#mainblock div") 

यह एक लक्ष्य सभी DIVs अंदर "#mainblock" यह "#mainblock" के प्रत्यक्ष बच्चे, या मुख्य ब्लॉक या इतने पर के बच्चे के बच्चे है कोई फर्क नहीं।

$("#mainblock > div") 

यह "#mainblock" के केवल प्रत्यक्ष बच्चे डीआईवी को लक्षित करेगा और अन्य डीआईवी को अनदेखा करेगा। यदि आपके पास केवल प्रत्यक्ष बच्चे हैं तो यह उपरोक्त तेज़ है। क्योंकि यह बच्चों के अन्य तत्वों के अंदर खोजने की कोशिश नहीं करता है।

1

$ ("# mainblock div") #mainblock के तहत सभी divs लगता है

$ ("# mainblock> div") केवल अपने बच्चे को पाया

मान लीजिए आप HTML संरचना नीचे है:

<div id="mainblock"> 
     <div> 
     <div></div> 
     <div></div> 
     </div> 
    <div></div> 
    <div></div> 
    </div> 

फिर

$("#mainblock div").length = 5 
$("#mainblock > div").length = 3 
संबंधित मुद्दे