2013-10-19 10 views
7

jQuery documentation राज्योंjQuery निकटतम - यह कैसे काम करता है?

सेट में प्रत्येक तत्व के लिए, पहला तत्व है कि तत्व में ही परीक्षण और डोम पेड़ में अपने पूर्वजों के माध्यम से ऊपर से गुजरने से चयनकर्ता से मेल खाता हो।

मेरी आंखों पर यहां परिचालन शब्द पूर्वजों है। जो दर्शाता है कि अगर कोई

elem.closest(selector) 

और चयनकर्ता एटीएम का पूर्वज नहीं है, तो कुछ भी नहीं मिलेगा। हालांकि, एक छोटे से एक ही दस्तावेज़ में कम नीचे इसे पढ़ता ऊपर डोम पेड़

यात्रा जब तक यह आपूर्ति चयनकर्ता

जो मैं अर्थ के रूप में व्याख्या के लिए एक मैच पाता है कि यह सभी तरह से जाना होगा अपने आदमी को पाने के लिए < शरीर > टैग तक। नोट, पैरेंट या पूर्वजों का कोई उल्लेख नहीं है।

मैंने एक त्वरित fiddle लिखा जो ऐसा लगता है कि यह सही कथन है जो सही है। हालांकि, मैंने सोचा कि यहां पोस्ट करना सबसे अच्छा है और देखें कि कोई और इसकी पुष्टि कर सकता है या नहीं।

+0

दो कथन पारस्परिक रूप से अनन्य नहीं हैं, वास्तव में उनका मतलब एक ही बात है। यह वास्तव में टैग तक जाएगा, यह दस्तावेज़ रूट करेगा। –

+0

आप सही हैं, मुझे लगता है। कोई भी कथन गलत नहीं है। लेकिन वह अभी भी मुझे थोड़ा उलझन में डाल देता है। मेरे बेवकूफ में पहले इनपुट में एक डेटा-एक्स विशेषता के साथ एक div है जो इसके तत्काल पूर्वजों और निकटतम रिपोर्टों को ढूंढता है। दूसरे इनपुट में पूर्वजों के रूप में ऐसा div नहीं है लेकिन यह अपने मूल div के भाई के रूप में मौजूद है लेकिन यह – DroidOS

उत्तर

7

इस तरह .closest() काम करता है (छद्म कोड में) के कार्यान्वयन:

while (node) { 
    if (node matches selector) { 
    return node; 
    } 
    node := node.parentNode 
} 

दूसरे शब्दों में, यह केवल माता-पिता श्रृंखला का पालन करते हुए ऊपर पार करता।

+0

आपका छद्म कोड मुझे देखे गए व्यवहार की पुष्टि करता है। 'नोड: = node.previous' यह है कि मैंने दस्तावेज़ों का व्याख्या कैसे किया। – DroidOS

+0

@DroidOS यह '.prevAll (चयनकर्ता) का व्यवहार होगा। सबसे पहले()' :) –

4

जब यह कहता है कि दूसरे उद्धरण में "डोम पेड़ की यात्रा करता है", तो इसका अर्थ है "अपने पूर्वजों में अपने पूर्वजों के माध्यम से डीओएम पेड़ में घूमना"। उद्धृत दोनों बयानों के बीच कोई अंतर नहीं है; एक दूसरे का एक पैराफ्रेश है जो थोड़ा सा विशिष्ट होता है।

+0

नहीं मिला है, लेकिन उस मामले में मेरे बेवकूफ में दूसरे इनपुट पर क्लिक क्यों करता है - जिसकी कोई नहीं है एक त्वरित माता पिता के रूप में डेटा-एक्स attrib असर div - निकटतम कुछ भी नहीं मिलता है? यदि यह डीओएम पेड़ के सभी तरह से जाता है तो उसे पहले इनपुट के मूल div को मिलना चाहिए था जिसमें डेटा-एक्स विशेषता है। – DroidOS

+0

@DroidOS: हाँ, यह कुछ नहीं पाता है। इसे पहले इनपुट के माता-पिता को क्यों पाया जाना चाहिए जब यह दूसरे इनपुट के माता-पिता नहीं है? – BoltClock

+0

यही वह है जो मुझे भ्रमित लगता है। अब आप _parent_ बात कर रहे हैं। एक मिनट पहले हम डोम पेड़ पर जाने के बारे में बात कर रहे थे। डीओएम पेड़ पर जाकर मुझे समझ में आया कि इसका मतलब यह है कि इससे कोई फर्क नहीं पड़ता कि यह माता-पिता है या नहीं। ध्यान दें कि दस्तावेज़ों में माता-पिता का बिल्कुल उल्लेख नहीं है। – DroidOS

1

jQuery निकटतम() चयनकर्ता के पहले मूल तत्व (इसके द्वारा HTML टैग) का चयन करता है, या चयनकर्ता स्वयं (यदि यह मेल खाता है) का चयन करता है। ऐसा लगता है कि आप 'पी' तत्व ($ ('p # someid') चुन रहे हैं), यह आपके 'पी' तत्व से खोजना शुरू कर देता है और यदि कोई मिलान नहीं है, तो यह उसके माता-पिता के पास जाता है। और इसी तरह

उदाहरण HTML:।

<div id='select_me'>Div 
    <p id='id'>paragraph</p> 
</div> 

$ ('# आईडी') निकटतम ('div) // div # select_me का चयन करेंगे, करीबी के रूप में माता पिता div

जहां के रूप में

<p id='select_me'>Div 
    <p id='select_me_now'>paragraph</p> 
</p> 

$ ('# select_me_now') निकटतम (पी); // पी # select_me_now स्वयं का चयन करेगा

1

.closest() विधि इन तत्वों और उनके पूर्वजों के माध्यम से डीओएम पेड़ में खोज करती है और मिलान तत्वों से एक नई jQuery वस्तु बनाती है।

पूर्व:

$("li.item-a").closest("ul").css("background-color", "red"); 

यह स्तर -2 का रंग बदल जाएगा, क्योंकि यह पहले का सामना करना पड़ा जब डोम पेड़ पर यात्रा है।

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