jquery与类find最接近的以前的兄弟姐妹

这里是我可以使用的粗糙的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遍历,find最接近的前一个.par_cat并做它的东西。

.find("li.par_cat")返回.find("li.par_cat")的整个负载(我在页面上有大约30个)。 我需要瞄准单一的。

会真的很感激任何提示:)

尝试:

 $('li.current_sub').prevAll("li.par_cat:first"); 

testing它与您的标记:

 $('li.current_sub').prevAll("li.par_cat:first").text("woohoo"); 

将用“woohoo”填满最近的li.par_cat。

尝试

  $('li.current_sub')。prev('。par_cat')。[do stuff];

使用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()备份一个兄弟来获得所需的元素。

我想所有的答案都是缺乏的。 我更喜欢使用这样的东西

 $('li.current_sub').prevUntil("li.par_cat").prev(); 

保存你不添加:首先在select器内,更容易阅读和理解。 prevUntil()方法具有更好的性能,而不是使用prevAll()