Tengo un <div> que tiene muchos otros <div> dentro de él, cada uno en un nivel de anidamiento diferente. En lugar de darle a cada niño <div> un identificador, prefiero darle a la raíz <div> el identificador. Aquí hay un ejemplo:
<div class="a" id="a5"> <div class="b"> <div class="c"> <a class="d"> </a> </div> </div> </div> Si escribo una función en jQuery para responder a la clase d y quiero encontrar el ID de su padre, la clase a , ¿cómo lo haría?
No puedo simplemente hacer $('.a').attr('id'); , porque hay varias clases a s. Podría encontrar la ID de los padres de los padres de sus padres, pero eso parece tener un diseño deficiente, lento y no muy polimórfico (tendría que escribir un código diferente para encontrar la ID de la clase c ).
Asumiendo que this es .d , puedes escribir
$(this).closest('.a'); El método closest devuelve el padre más interno de su elemento que coincide con el selector.
Puede usar parent() para obtener todos los padres con el selector dado.
Descripción: Obtiene los ancestros de cada elemento en el conjunto actual de elementos coincidentes, opcionalmente filtrados por un selector.
Pero parent() obtendrá solo el primer padre del elemento.
Descripción: Obtiene el padre de cada elemento en el conjunto actual de elementos coincidentes, opcionalmente filtrado por un selector.
jQuery padre () frente a padres ()
Y está .parentsUntil() que creo que será el mejor.
Descripción: Obtiene los ancestros de cada elemento en el conjunto actual de elementos coincidentes, hasta el elemento coincidente con el selector, pero sin incluirlo.