2013-03-26 12 views
26

closest() पहला तत्व प्राप्त करेगा जो तत्व का परीक्षण करके चयनकर्ता से मेल खाता है और डीओएम पेड़ में अपने पूर्वजों के माध्यम से आगे बढ़ता है। लेकिन मैं जानना चाहता हूं कि परिणाम प्राप्त करने का कोई तरीका है (मेरा मतलब है कि सिर्फ इसके माता-पिता प्राप्त करें)? धन्यवाद।jquery निकटतम स्वयं को बाहर निकालें

मुझे एक उदाहरण लेने दो। कृपया इसकी समीक्षा करें।

<div id='div1' class="container"> 
    <div id="div2" class="container"> 
     <!--many nested div.container as it directly or indirectly children --> 
    </div> 
    <div id="div3" class="container"> 
     <!--many nested div.container as it directly or indirectly children --> 
    </div> 
</div> 

$(function() { 

    $('div.container').on('mouseover', function(e){ 
     //I only want to select the first parent with the class container. 
     //closest include the this element. 
     console.log($(this).closest('.container').attr('id')); 
    }); 
}); 
+0

और अधिक समझा सकता है? कोड स्निपेट जोड़ना अधिक सहायक होगा ... – Reigel

+3

'.parents() 'मदद करेगा। –

+0

@Reigel क्या आप इसे फिर से समीक्षा कर सकते हैं? मैंने अपडेट किया था। धन्यवाद। –

उत्तर

0

सही जवाब .parents('.container:first'); धन्यवाद

+15

प्रदर्शन-वार, '.parent()। निकटतम (' कंटेनर ')' बेहतर प्रदर्शन करना चाहिए क्योंकि यह पहले तत्व से मेल खाने के बाद बंद हो जाता है, '.parents()' के विपरीत जो दस्तावेज़ स्तर तक हमेशा तक पहुंच जाता है। –

+0

आप जानते हैं? मुझे लगता है कि '। माता-पिता() ....' थोड़ा कठिन कोड है। –

+3

ठीक है हाँ। जब आप पहले स्तर से मेल नहीं करना चाहते हैं तो एक स्तर ऊपर ले जाना केवल तार्किक है। किसी भी तरह से दोनों का एक ही आउटपुट होता है - अंतर यह है कि 'माता-पिता() 'के अंदर' पहला 'होने के कारण थोड़ा महंगा हो सकता है': पहला 'एक तेज तापमान है और चयनकर्ता आमतौर पर प्रत्येक (पूर्वजों) तत्व के विरुद्ध मेल खाते हैं लौटने। –

69

आप .closest() पूर्वज खोजने की कोशिश से पहले एक स्तर ऊपर पार कर सकते हैं:

$(this).parent().closest('.container'); 
0

है आप वास्तव में, केवल माता-पिता divs चाहते हैं तो हाँ $ (यह)। माता-पिता ('कंटेनर') काम करेंगे। यदि आप निकटतम तत्व की तलाश करना चाहते हैं और इसे एक भाई होने की अनुमति देते हैं (जो ऐसा लगता है जो आप वास्तव में पूरा करने की कोशिश कर रहे हैं) तो आप $ (this) .prev ('कंटेनर') का उपयोग कर सकते हैं।

+0

यह उपयोगी नहीं होगा क्योंकि आप कभी नहीं जानते कि उसके माता-पिता एक स्तर ऊपर या उच्च हैं और आप अपने माता-पिता को कक्षा द्वारा लक्षित करते हैं! क्या होगा यदि

किसी अन्य div टैग में घोंसला गया था जिसमें कोई वर्ग नहीं था और वह अभी भी इसे माता-पिता को लक्षित करना चाहता था! –

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