jquery 遍历列表元素

标签 jquery

假设你有这个 html

<ul class="nav sub_nav_home">
    <li id="sub_nav_home1"><a href="#"><span>LINK1</span></a></li>
    <li id="sub_nav_home2"><a href="#"><span>LINK2</span></a></li>
    <li id="sub_nav_home3"><a href="#"><span>LINK3</span></a></li>
 </ul>

如何迭代 jquery 中的每个“li”,添加一个“current”类,等待 3 秒,然后移动到下一个“li”,一旦到达末尾再次开始?

谢谢

最佳答案

一个简单的解决方案可能如下所示:

$(function() {
  var nav = $("ul.sub_nav_home");
  setInterval(function() {
    var next = nav.find("li.current + li, li:first-child").last();
    nav.find("li.current").removeClass("current");
    next.addClass("current");
  }, 3000);
});

You can give it a try here 。您可以将其进一步压缩,只是试图清楚地列出正在发生的事情。它的作用是每 3 秒运行一次执行的函数,我们发现 <ul>从一开始就缓存东西,然后在每次运行时我们都会得到 .current 之后的一个<li> (如果有的话)和第一个,以防万一我们到了最后。我们采用最后一个(因为它们是按文档顺序排列的),所以我们总是更喜欢下一个而不是循环回到开头。然后只需从当前类中删除该类并将其添加到下一行即可。

关于jquery 遍历列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265164/

相关文章:

jQuery 在表单提交时更改元素类

javascript - Ajax JSON 故障

jquery - 在 Internet Explorer 中使用 jQuery 读取 CSS3 属性

javascript - 如果 JS 元素为空,则删除 css 类

javascript - 如何清除并重新填充下拉选项

java - 如何使用Jquery 从servlet 获取返回的数据?

javascript - 将鼠标悬停在表格中的特定行上时显示按钮

javascript - 如何根据 Jquery 中的鼠标位置拖动子对象?

jquery - alpha排序插件: how to add 'shuffle' animation

javascript - 您是否需要在 ajax 中使用两个调用 - 1 个 get 和 1 个 post ,或者您可以发送成功/失败的数据吗?