Eu tenho um <div>
que tem muitos outros <div>
s, cada um em um nível de aninhamento diferente. Em vez de dar a cada criança <div>
um identificador, prefiro apenas dar à raiz <div>
o identificador. Aqui está um exemplo:
<div class="a" id="a5">
<div class="b">
<div class="c">
<a class="d">
</a>
</div>
</div>
</div>
Se eu escrever uma função no jQuery para responder à classe d
e desejar encontrar o ID para seu pai, classe a
, como eu faria isso?
Não posso simplesmente fazer $('.a').attr('id');
, porque existem várias classes a
. Eu poderia encontrar o ID do pai, mas isso parece ter um design ruim, lento e não muito polimórfico (eu teria que escrever um código diferente para encontrar o ID da classe c
).
Passe um seletor para a função dos pais do jQuery :
EDIT Hmm, na verdade a resposta de Slaks é superior se você quiser apenas o ancestral mais próximo que corresponda ao seu seletor.
fonte
Você pode usar os pais () para obter todos os pais com o seletor fornecido.
Mas parent () obterá apenas o primeiro pai do elemento.
pai jQuery () vs. pais ()
E há .parentsUntil () que eu acho que será o melhor.
fonte
closest
.Use .parentsUntil ()
fonte
Extraído dos comentários de @ Resord acima. Este funcionou para mim e mais próximo da questão.
obrigado
fonte