我有这个清单
.nextUntil(':contains("2010")')开启。当对.next()设置的变量调用.nextUntil()时,显然jQuery会跳过初始的:contains()条件。

为什么会这样呢?是错误还是我错过了什么?

<nav class="timeLineNav">
    <ul>
        <li class="selected is-loaded"><a href="#year2014">2014</a></li>
        <li class="is-loaded"><a href="#year2013">2013</a></li>
        <li class=""><a href="#year2012">2012</a></li>
        <li class=""><a href="#year2011">2011</a></li>
        <li class=""><a href="#year2010">2010</a></li>
    </ul>
</nav>


这是JavaScript代码:

var list = $('.timeLineNav ul li');

var nextUntil = list.nextUntil(':contains("2010")');
nextUntil.each(function (n, v) {
    $('#length').append('<li>' + $(v).text() + ' ' + '</li>');
});

var next = nextUntil.next();

next.each(function (n, v) {
    $('#nextLength').append('<li>' + $(v).text() + ' ' + '</li>');
});


这是一个带有完整示例的小提琴

最佳答案

您在jsfiddle中的输出符合预期。
使用var nextUntil = list.nextUntil(':contains("2010")');变量nextUntil具有“集合” {2013, 2012, 2011}

然后为该集合中的每个项目打印下一个li:

for 2013 --> 2012,
2012 --> 2011,
2011 --> 2010.


因此,在jsfiddle上的第二个输出