首页 > 解决方案 > 如何在jquery中按类获取倒数第二个元素?

问题描述

我有一些img标签有一个名为targetMe. 现在在给定时间,可以有许多图像共享这个类。现在我可以通过这样做来按类定位最后一个元素

$('.targetMe').last()

但我想定位这个类的倒数第二个元素。所以我试着这样做

$('.targetMe').last().prev()

根据这个堆栈溢出帖子Select second class element via jquery,我试过这个

$('.targetMe:nth-child(2)')

但我无法按类获得倒数第二个元素。我究竟做错了什么?

标签: jquery

解决方案


prev() 文档中所述:

获取匹配元素集中每个元素的前一个兄弟元素。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索前一个兄弟。

但在你的情况下,targetMe不是“紧接在前面的兄弟姐妹”。中间有文字和图标。因此,我们需要按原样使用prevAll()

获取匹配元素集中每个元素的所有先前兄弟,可选地由选择器过滤。

因此,它将尝试根据类查找所有“前面的兄弟”,而不仅仅是“直接在前面的兄弟”,然后,我们可以使用:first选择器仅获取第一个匹配项,这将是基于类的倒数第二个元素.

工作演示:

$('.targetMe').last().prevAll('.targetMe:first').css('background', '#f99')
div { margin: 5px; border: 1px solid #CCC; padding: 4px 8px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="targetMe">A</div>
Some Text Here...
<div class="targetMe">B</div>
Some Text Here...
<div class="targetMe">C</div>


推荐阅读