Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何将nextUntil与子选择器一起使用?_Jquery - Fatal编程技术网

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