下面是我要使用的粗略HTML:
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li> // this is the single element I need to select
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub"></li> // this is where I need to start searching
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
我需要遍历.current_sub
,找到最接近的前一个.par_cat
并对其执行操作。
.find("li.par_cat")
返回.par_cat
的全部负载(我在页面上大约有30个)。我要把目标对准那一个。
发布于 2010-02-22 18:42:14
尝试:
$('li.current_sub').prevAll("li.par_cat:first");
使用您的标记进行了测试:
$('li.current_sub').prevAll("li.par_cat:first").text("woohoo");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat">// this is the single element I need to select</li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub">// this is where I need to start searching</li>
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
</ul>
将用"woohoo“填充最近的前一个li.par_cat
。
发布于 2010-02-22 18:45:18
试一试
$('li.current_sub').prev('.par_cat').[do stuff];
发布于 2012-11-10 06:27:44
使用prevUntil()将允许我们获得一个远方的兄弟,而不必获得所有。我有一个特别长的集合,使用prevAll()会占用太多的CPU。
var category = $('li.current_sub').prev('li.par_cat');
if (category.length == 0){
category = $('li.current_sub').prevUntil('li.par_cat').last().prev();
}
category.show();
如果匹配,它将获取前面的第一个同级元素,否则将获取匹配的同级元素之前的同级元素,因此我们只需使用prev()再备份一次,以获得所需的元素。
https://stackoverflow.com/questions/2310270
复制相似问题