Jquery 如何将nextUntil与子选择器一起使用?
鉴于此标记:Jquery 如何将nextUntil与子选择器一起使用?,jquery,Jquery,鉴于此标记: <ul> <li><a class="level1 selected">1</a></li> <li><a class="level2">2</a></li> <li><a class="level2">3</a></li> <li><a class="level2">4&
<ul>
<li><a class="level1 selected">1</a></li>
<li><a class="level2">2</a></li>
<li><a class="level2">3</a></li>
<li><a class="level2">4</a></li>
<li><a class="level1">1</a></li>
<li><a class="level2">5</a></li>
<li><a class="level2">6</a></li>
<li><a class="level2">7</a></li>
<li><a class="level1">1</a></li>
</ul>
或者在一行上:
$lvl2 = $('a.selected').closest('li').nextUntil($('a:not(.level2)').closest('li'));
您可以为此创建一个自定义函数,而不是使用复杂的选择器(这将在jQuery中循环过多的对象)。我认为这样会更有效率。试一试
$.fn.nextilllist1=函数(){
返回此。每个(函数(){
var$item=$(this.next(“li”);
while($item.find(“.level1”).length如果你的level1/level2类在li
而不是a
上,这会简单得多。当然,我无法控制标记。太棒了!最近的是我的朋友。+1.永远不知道nextUntil会接受元素列表,并在遇到第一个匹配时停止...)
$lvl1 = $('a:not(.level2)').closest('li');
$lvl2 = $('a.selected').closest('li').nextUntil($lvl1);
$lvl2 = $('a.selected').closest('li').nextUntil($('a:not(.level2)').closest('li'));
$.fn.nextTillList1 = function () {
return this.each(function () {
var $item = $(this).next("li");
while($item.find(".level1").length <= 0) {
$item.children().addClass("on");
$item = $item.next("li");
}
});
};
// Selects the parent of the select A tag
var selectedParent = $("ul li a.selected.level1").parents("li");
// Call custom function
selectedParent.nextTillList1();