tag ancestors javascript jquery

javascript - ancestors - nested parent jquery



jQuery padre de un padre (9)

Deberia de funcionar. También puede probar $ (this) .parents (tag), donde tag es la etiqueta que desea buscar.

Por ejemplo:

$(this).parents("tr:first")

Encontrará el tr más cercano "en la cadena".

Actualmente estoy tratando de encontrar el padre de un elemento primario. Tengo un enlace al que se hace clic en <td> , y me gustaría obtener el objeto <tr> .

¿Por qué no funciona el trabajo "$ (this) .parent (). Parent ()"? ¿Qué será?

Gracias,
Brendan

Editar: Parece que un error en mi sintaxis fue arrojar todo. "$ (this) .parent (). parent ()" de hecho funciona, pero terminé yendo con $ (this) .closest (''tr'') "porque parece ser la solución más eficiente.


Eso debería funcionar ... podrías intentarlo

$(this).parents('':eq(1)'');

Los .parents (selector) dice obtener todos los antepasados ​​que coinciden con el selector

y el: eq (1) dice encontrar el elemento oneth (indexado cero, entonces el segundo) en la lista


Este fragmento me ha funcionado en el pasado:

$(this).parent().parent();

Publique un código para que podamos ver si puede haber otro problema en alguna parte ...


Intente ajustar $ (this) .parent () en un objeto jQuery como $ ($ (this) .parent (). A menudo encuentro la necesidad de hacer esto para asegurarme de tener un objeto jquery válido. A partir de ahí, podrá obtener el control de los padres o usar el prev () tal vez.


La mejor manera sería probablemente usar lo closest :

$(this).closest(''tr'');

Mira la documentación :

Trabajos más cercanos mirando primero el elemento actual para ver si coincide con la expresión especificada, si es así, solo devuelve el elemento en sí. Si no coincide, continuará recorriendo el documento, padre por padre, hasta que se encuentre un elemento que coincida con la expresión especificada. Si no se encuentra ningún elemento coincidente, no se devolverá ninguno.


Si tiene algún tipo de id / class para el padre, puede usar parents () pero eso le dará a todos los padres hasta el <body> a menos que filtre () o lo detenga de otra manera como

$(this).parents(''.myClass'');

Espero que esto ayude a alguien :)


intenta también

$(this).closest(''div.classname'').hide();


.closest() no siempre es la mejor opción, especialmente cuando tienes el mismo elemento de construcción.

<div> <div> <div> </div> </div> </div>

Puedes ser padre de un padre y es muy fácil:

var parent = $(''.myDiv'').parent(); var parentParent = $(parent).parent(); var parentParentParent = $(parentParent).parent();

etc.


var getParentNode = function(elem, level) { level = level || 1; for (var i = 0; i < level; i++) { if (elem != null) { elem = elem.parentNode; } } return elem; }