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()