我正在尝试将 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那样清楚不是点击锚的父级。但我也可以看到它可能只是在 DOM 中的那个级别再次泛型匹配 DIV。尽管它看起来parents()
并且parent()
应该在匹配时保持更多的上下文上下文。