Я пытаюсь пройти DOM до ближайшего DIV. Разметка ниже ниже.
<div>
<span>
<a class="anchor">Text</a>
</span>
</div>
<div>
<span>
<a class="anchor">Text</a>
</span>
</div>
<div>
<span>
<a class="anchor">Text</a>
</span>
</div>
Когда я использую любое из следующего:
$('.anchor').closest('div').css('background-color', 'red');
$('.anchor').parents('div').css('background-color', 'red');
$('.anchor').parent().parent().css('background-color', 'red');
Влияет на все DIV следующим образом:
<div style="background-color: red">
<span>
<a class="anchor">Text</a>
</span>
</div>
<div style="background-color: red">
<span>
<a class="anchor">Text</a>
</span>
</div>
<div style="background-color: red">
<span>
<a class="anchor">Text</a>
</span>
</div>
Если бы я щелкнул средний якорь, я бы хотел:
<div>
<span>
<a class="anchor">Text</a>
</span>
</div>
<div style="background-color: red">
<span>
<a class="anchor">Text</a>
</span>
</div>
<div>
<span>
<a class="anchor">Text</a>
</span>
</div>
Мне кажется, я понимаю, почему closest()
будет соответствовать всем трем DIV как ближайшему DIV к клику, по которому щелкнули, поскольку оно в общем случае соответствует DIV.
Но при использовании parents()
или parent()
это не так ясно, поскольку другие DIV не являются родителями привязки клика. Но я также могу видеть, где это может просто снова соответствовать DIV на этом уровне в DOM. Хотя кажется, что parents()
и parent()
должны поддерживать больше контекстного контекста при сопоставлении.