2012-02-03 18 views
8

Estoy intentando utilizarobtener el atributo de un nodo padre

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

que debería volver a 0 - 5 en la cadena pero no va a funcionar. Lo estoy usando en una función como esta

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

Todos los elementos con class 'algunaClase' tienen una parentNode

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

y no tengo ni idea de dónde está el error. ¿Qué estoy haciendo mal?

--David

+1

en lugar de parentNode uso parent() de jQuery. parentNode es de javascript simple y no se aplica a los elementos de jQuery – machineaddict

Respuesta

30

Usted está mezclando jQuery y JavaScript llanura en la misma línea de código y eso no funcionará. También se puede usar:

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

o

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

parentNode no es una propiedad de un objeto jQuery, por lo que no se pueden mezclar los dos la forma en que estaban haciendo. El método jQuery para obtener el padre es .parent().

+0

¡Gracias! Voy a marcar esto como respondido en 10 minutos! –

3

Trate de hacer esto en su lugar:

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

Para obtener más información sobre las funciones como .parent(), consulte la sección de desplazamiento de la documentación de jQuery: http://api.jquery.com/category/traversing/

+0

Encontré la respuesta justo después de que pregunté, ¡pero gracias por la respuesta de todos modos! –

4

Usted debe do

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

porque no se puede llamar attr() en un objeto jQuery no

+0

Encontré la respuesta justo después de que pregunté, ¡pero gracias por la respuesta de todos modos! –

3

usando jQuery que debe ser:

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

Sin usar jQuery esto sería:

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

Yo prefiero usar:

var item = $(this); 

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

//and then use parent.attr('data-element') 
Cuestiones relacionadas