2013-03-26 20 views
26

closest(), öğenin kendisini sınayarak ve DOM ağacındaki ataları boyunca ilerleyerek seçiciyle eşleşen ilk öğeyi alır. Ama bilmek istiyorum Herhangi bir sonuç var sonuç dışı bırakmak için var mı (Ben sadece bunun ebeveynleri olsun)? Teşekkürler.jquery en yakınını kendiliğinden dışlamak için

Bir örnek vereyim. lütfen onu gözden geçir .

<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

daha fazlasını nasıl açıklayabilir? Kod parçacıkları ekleyerek daha yararlı olur ... – Reigel

+3

'.parents()' yardımcı olacaktır. –

+0

@Reigel Lütfen tekrar gözden geçirebilir misiniz? Güncelledim. Teşekkürler. –

cevap

0

gerçekten o, yalnızca üst div'leri istiyorsanız doğru cevabı .parents('.container:first'); teşekkürler

+15

Performans-bilge, '.parent() en yakın ('. Container')', ilk öğeyi eşleştirdikten sonra durduğunda, her zaman belge düzeyine kadar tümüyle ilerleyen .parents() 'dan farklı olarak daha iyi performans göstermelidir. –

+0

Biliyor musun? Bence .parent() .... 'küçük bir kod. –

+3

Eh evet. İlk seviyeyi eşleştirmek istemediğinizde bir seviye yukarı çıkmak sadece mantıklıdır. Her iki yol da her ikisinin de aynı çıktısına sahip olur - fark şu: 'ilk' bir 'ebeveyn()' inin olması: 'ilk' bir Sizzle uzantısıdır ve seçiciler genellikle her bir (ata) öğeye karşı eşleştirilir. dönüyor. –

69

Sen .closest() atası bulmaya çalışırken önce bir seviye yukarı hareket ettirebilir:

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

evet $ (Bu) .parents ('. container') çalışırdı. En yakın öğeyi aramak ve bir kardeşi olmak için izin vermek istiyorsanız (ki bu gerçekten başarmaya çalıştığınız şey olabilir) $ (this) .prev ('. Container') kullanabilirsiniz.

+0

Bu yararlı olmayacaktır çünkü ebeveyninin bir seviye yukarı ya da daha yüksek olup olmadığını ve ebeveynlerini sınıfına göre hedeflediğinizi asla bilemezsiniz!

, sınıf içermeyen başka bir div etiketine yerleştirilmişse ve yine de bunu ebeveynleri hedeflemek istiyorsa ne olur? –

İlgili konular