2013-06-14 26 views
15

Aşağıdaki HTML biçimlendirmesi vardır:ebeveyn elemanın sınıfını alın

<div class="nav"> 
    <ul> 
     <li class="tab1"> 
     <a href="#1" class="current">Welcome</a> 
     </li> 
     <li class="tab2"> 
     <a href="#2">About</a> 
     </li> 
     <!-- and some lists more --> 
    </ul> 
</div> 

ve ben .current ile çocuğun ebeveyn elemanın class bulmak istiyoruz:

var currentli = $('.nav').find('a.current').parent().attr('class'); 
console.log(currentli); 

ama her zaman atıyor undefined

Not: Hangisini bilmiyorum a şu anda .current var, bu yüzden .find() yöntemini kullanmam gerekiyor.

var currentli = $('.nav').find('a.current').parent().prop('className'); 
+3

Kodunuz burada çalışıyor: http://jsfiddle.net/FSGpz/ - 'tab1 'kaydedildi – tymeJV

+0

Benim için de çalışıyor. – blend

+0

Bunu bir belgede hazırlıyor musunuz? – j08691

cevap

28

Kodunuz zaten çalışmalıdır, ancak bunun yerine özelliğini className erişmek için daha güvenilir olabilir Bir jQuery nesnesi tekrar.

bakınız keman: http://jsfiddle.net/RaphaelDDL/wnW4u/

Ps .: birden fazla aclass="current" varsa, sadece ilki alınır.

0

Bu çalışacaktır:

var currentli = $($('.nav').find('a.current')).parent().attr('class'); 
console.log(currentli); 

ben sadece içine bulundu koleksiyonu dönüştürerek ediyorum

+0

'.find()', kesinlikle bir jQuery nesnesi döndürür ve kesinlikle onu zincirleyebilirsiniz. Neden başka türlü düşünüyorsun? – nnnnnn

+0

@nnnnnn true doğru. Bir dizi nesnesini döndüren Standalone '$ .find()'. – RaphaelDDL

+0

"Bağımsız" $ .find() '" nedir? Doco'yla bağlantın var mı? (Ne olursa olsun, OP kullandığı değil.) – nnnnnn