nextAll() - 多个列表遍历

Posted

技术标签:

【中文标题】nextAll() - 多个列表遍历【英文标题】:nextAll() - Multiple list traversal 【发布时间】:2012-02-10 17:28:48 【问题描述】:

我有三个列表。 当我单击下一步时,我想获得下一个 li,这很好,但是当我到达第一个列表的末尾时,我希望下一个成为第二个列表的第一个。我会尝试更好地解释一下。

<ul class='list'>
   <li image_id="1"></li>
   <li image_id="2"></li>
</ul>

<ul class='list'>
   <li image_id="3"></li>
   <li image_id="4"></li>
</ul>

<ul class='list'>
   <li image_id="5"></li>
   <li image_id="6"></li>
</ul>

所以我有三个列表..接下来我想知道我有多少里所以我写了..

var how_many $('ul.list li').length;

这很好,它带回了所有 6 li's..

接下来我想找到一个 li,如果它有当前的图像 id。

var which = $('ul.list li[image_id^="' +  image_id +'"]');

此时一切正常。

所以现在我要查找下一个 li 的图像 id 是什么..

var found_next = which.nextAll('ul.list li').attr('image_id');

这也有效..

然后我使用 .load 加载新图像,该 .load 具有更新当前 image_id 的回调...

“问题”是单击时,next..next..next 等,我到最后说第一个列表 jquery 带回“未定义”而不是第二个列表的第一个 li。有人有什么建议吗?

任何帮助将不胜感激。

【问题讨论】:

发生这些问题时的首选 -> api.jquery.com/nextAll 【参考方案1】:

.nextAll 仅适用于兄弟姐妹。如果要跳转到下一个&lt;li&gt;,则必须选择所有元素,并使用.index.eq()选择下一个&lt;li&gt;

var $li = $('ul.list li');
// Example, inside an event listener:
    var index = $(this).index($li);
    var nextElement = $li.eq( index + 1 );

【讨论】:

可能与.index()结合使用。 谢谢我刚刚查找了 .index.. 谢谢 - 如果成功将编辑。 @smoop 你必须非常仔细地阅读index。它有多种口味(如您在the documentation 中所见)。 PS。您可能还会发现 this answer 很有用。 效果很好,感谢您的时间和回答 - 非常感谢。【参考方案2】:

不确定您是否已经弄清楚了。如果没有,你可以试试:

var $li = $('ul.list li'), i = 0, $currentLi;

$('button').click(function()
    if(i < $li.length) 
        $currentLi = $li.eq(i); //eq(i) returns a jQuery object where i is the zero-based index
        i++
    else 
        alert('End of LIs');
    
);

这是一个有效的Demo

【讨论】:

这是一个非常优雅的解决方案,谢谢,我也会研究一下。感谢您的宝贵时间。

以上是关于nextAll() - 多个列表遍历的主要内容,如果未能解决你的问题,请参考以下文章

使用 itertools.cycle() 循环遍历多个列表

遍历列表以在 Flutter 中呈现多个小部件?

循环遍历列表以从 SQL 查询创建多个数据帧

在遍历列表时在数据框的一行中添加多个值

Django:遍历模板中的过滤列表

vue实现数据遍历多个倒计时列表