2012-02-03 19 views
8

Sto provando ad usareOttenere attributo di un nodo padre

$(this).parentNode.attr('data-element') 

che dovrebbe tornare 0-5 nella stringa ma semplicemente non funzionerà. Io lo utilizzo in una funzione come questa

$('.someClass').each(function(){ 
    $(this).html(SomeFunction('SomeString', $(this).parentNode.attr('data-element'))); 
}); 

Tutti gli elementi con class 'someClass' avere un parentNode

<li class="element" data-element: 1 (or any number from 0 to 5 (including))> </li> 

e non ho idea di dove è l'errore. Che cosa sto facendo di sbagliato?

--David

+1

invece di parentNode uso genitore() da jQuery. parentNode proviene da un semplice javascript e non si applica agli elementi jQuery – machineaddict

risposta

30

si stia mescolando jQuery e javascript pianura nella stessa riga di codice e non funzionerà. È possibile utilizzare:

$(this).parent().attr('data-element'); // jQuery 

o

this.parentNode.getAttribute("data-element"); // plain javascript 

parentNode non è una proprietà di un oggetto jQuery, quindi non è possibile mescolare i due il modo in cui si stava facendo. Il metodo jQuery per ottenere il genitore è .parent().

+0

Grazie! Lo contrassegnerò come risposta in 10 minuti! –

3

Prova a fare questo, invece:

$(this).parent().attr('data-element'); 

Per ulteriori informazioni sulle funzioni come .parent() vedere la sezione di spostamento della documentazione JQuery: http://api.jquery.com/category/traversing/

+0

Ho trovato la risposta subito dopo averlo chiesto, ma grazie comunque per la risposta! –

4

Si dovrebbe do

$(this).parent().attr('data-element') 

perché non si può chiamare attr() su un oggetto non jQuery

+0

Ho trovato la risposta subito dopo averlo chiesto, ma grazie comunque per la risposta! –

3

utilizzando jQuery dovrebbe essere:

$(this).parent().attr('data-element'); 

Senza l'utilizzo di jQuery questo sarebbe:

this.parentNode.getAttribute("data-element") 
0

Io preferisco usare:

var item = $(this); 

var parent = item.closest(".element"); //using the class for selection 

//and then use parent.attr('data-element') 
Problemi correlati