Como encontrar um pai com uma classe conhecida em jQuery?
<div>
que tem muitos outros <div>
dentro dele, cada um num nível diferente de nidificação. 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 em jQuery para responder à classe d
e eu quero encontrar o ID para o seu pai, classe a
, Como eu faria isso? Eu não posso simplesmente fazer $('.a').attr('id');
porque há várias classes a
s. Eu poderia encontrar o ID do pai de seu pai, mas que parece de mau design, lento, e não muito polimórfico (eu teria que escrever um código diferente para encontrar o ID para a classe c
).
4 answers
Assumindo que this
é .d
, podes escrever
$(this).closest('.a');
A closest
o método devolve o pai mais íntimo do seu elemento que corresponde ao selector.
Passa um selector para o jQuery pais Função:
d.parents('.a').attr('id')
EDIT Hmm, na verdade a resposta dos escravos é superior se você só quiser o ancestral mais próximo que corresponda ao seu selector.
Pode usar os pais () para obter todos os pais com o selector indicado.
Descrição: obter os antepassados de cada um elemento no conjunto actual de correspondência elementos, filtrados opcionalmente por um selector.
Mas o pai() vai receber apenas o primeiro pai do elemento.
Descrição: obter o pai de cada elemento no conjunto actual de correspondência elementos, filtrados opcionalmente por um selector.
E há .parentsUntil () que eu acho que será o melhor.
Descrição: obter os antepassados de cada um elemento no conjunto actual de correspondência elementos, até à elemento correspondente ao selector.
Utilizar .parentsUntil ()
$(".d").parentsUntil(".a");