2017-01-06 14 views
6

मेरे पास नीचे एक नमूना उदाहरण है, मुझे यकीन नहीं है कि पहला उदाहरण (div का उपयोग करके) पाठ को तब नहीं मिला जब दूसरा (span का उपयोग कर) का उपयोग करते हुए एक ही जे एस कोड closest() साथ कि प्राप्त कर सकते थे:निकटतम() विधि अपेक्षित काम नहीं कर रहा है

$('.class-1').closest('div').find('.class-2').text() 

पहले स्निपेट (div के उपयोग करते हुए) नहीं कर सकते closest() का उपयोग करके पाठ मिलता है:

console.log($('.class-1').closest('div').find('.class-2').text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class-1">Div 1 Content</div> 
 
    <div class="class-2">Div 2 Content</div> 
 
</div>


दूसरा टुकड़ा (span के उपयोग करते हुए) पाठ closest() का उपयोग कर रही:

console.log($('.class-1').closest('div').find('.class-2').text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <span class="class-1">Div 1 Content</span> 
 
    <br/> 
 
    <span class="class-2">Div 2 Content</span> 
 
</div>

मैं विकल्प parents()/parent()/siblings()/nextAll() के बारे में जानते हैं कि लौट सकते हैं class-2 टी इस मामले में ext, लेकिन मैं सिर्फ यह जानना चाहता हूँ कि यह व्यवहार क्या होता है।

+2

ऐसा इसलिए है क्योंकि 'निकटतम()' में वर्तमान तत्व शामिल है, इसलिए 'निकटतम (' div ') 'एक ही तत्व को वापस कर रहा है। Http://api.jquery.com/closest देखें –

उत्तर

12

क्योंकि .closest() जांच करता है कि फोन करने के तत्व के रूप में अच्छी तरह से चयनकर्ता फिट बैठता है, और अपने मामले में .class-1 भी एक div है।

डॉक्स से:

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

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