2013-06-14 10 views
15

Ho la seguente markup HTML:Ottenere classe di elemento padre

<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> 

e mi piacerebbe trovare il class dell'elemento genitore del bambino con .current:

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

ma sempre mi getta undefined

NOTA: non so che a ha attualmente .current ed è per questo che devo usare il metodo .find().

+3

Il tuo codice funziona qui: http://jsfiddle.net/FSGpz/ - 'tab1' è registrato – tymeJV

+0

Anche per me. – blend

+0

Si sta eseguendo questo all'interno di una chiamata pronta per il documento? – j08691

risposta

28

Il codice dovrebbe già funzionare, ma potrebbe essere più affidabile di accedere alla proprietà className invece:

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

Ciò funzionerà:

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

Sto semplicemente trasformando la raccolta trovato in ancora un oggetto jQuery.

See violino: http://jsfiddle.net/RaphaelDDL/wnW4u/

Ps .: Se più di un a ha class="current", solo il primo sarà recuperato.

+0

'.find()' restituisce definitivamente un oggetto jQuery, e si può sicuramente incatenarlo. Perché pensi diversamente? – nnnnnn

+0

@nnnnnn vero vero. Standalone '$ .find()' che restituisce un oggetto array. – RaphaelDDL

+0

Che cos'è "standalone' $ .find() '"? Hai un link ad alcuni documenti? (Indipendentemente da ciò, l'OP non sta usando.) – nnnnnn

Problemi correlati