2010-04-20 10 views
36

Estoy tratando de recuperar el elemento primario de < a> elemento padre (¿abuelo?). Quiero encontrar ese abuelo, luego encontrar una etiqueta < b> en ese elemento, luego almacenar ese texto como una variable para publicar en otro lugar en la página. He intentado usar la función parent() pero sin éxito.jQuery - Obtención del elemento primario de segundo nivel de un elemento

Aquí está el código que he intentado:

$('.mixPlayCell a').click(function() { 
     var title = $(this).parent().get(0).parent().get(0).text(); 
     alert(title); 
    }); 
+0

no creo que entienda lo que '.get()' hace. –

+4

Ciertamente no lo hago. Todo lo que hago en jQuery es adivinar y verificar ... ¿Podrías dar más detalles? –

+0

Como 'parent()' devuelve una colección con un solo elemento, puede llamar directamente a la siguiente función. El 'get (0)' es implícito. –

Respuesta

37

intento:

$(this).parent().parent().find('.thingtofind').text(); 
+0

Pensé que ya lo había intentado, pero supongo que no. Funciona muy bien, gracias. –

+1

Mira [link] http://stackoverflow.com/questions/1108971/jquery-parent-select-more-efficent-way para un enfoque más rápido y más elegante en su lugar usando .parent(). Parent() .... – dzona

2
$('.mixPlayCell a').click(function() { 
    elem = $(this).parent().parent(); 
    title = $("tag selector goes here",elem).html(); 
}); 

Algo como esto?

+0

+1, .get (0) es innecesario y devuelve el objeto DOM, que no tiene los métodos jQuery. [Ver aquí] (http://static.bwerp.net/~adam/2010/04/20/parent.html). –

0
$(this).parent().parent().find('mytag').text() 

Debería funcionar bien.

Puede usar cualquier selector en el método find. Si solo necesita buscar en los elementos secundarios directos del elemento de los abuelos, también puede usar $.children en lugar de find que busca en todos los elementos secundarios del elemento.

1

Hay sólo 1 de los padres, no hay necesidad de .get (0)

var title = $(this).parent().parent().find("whateveryouwant").html(); 
46

Para la selección de un segundo padre

parents(':eq(1)') 

se ve más suave que

parent().parent() 

Además, podría encontrar que

closest('ul') 

se adapta mejor al trabajo.

-1

probar esto por aplicación sencilla:

$('.mixPlayCell a').click(function() { 
    var title = $(this).parents().text(); 
    alert(title); 
}); 

Sólo .parent cambiada() con uno .parents()

esto es obras para cada versión de jQuery.

5

parents() devuelve una lista, por lo que este funciona:

$(this).parents()[1]; 
Cuestiones relacionadas