javascript - 让 setInterval 处理 html 列表项中的子元素

标签 javascript jquery html css

我正在使用 setInterval() 方法尝试将一个类应用于每个单独的 li

我创建了一个应用 toggleClass 的 jsFiddle,但我无法让它一个一个地应用该类。

下面是我的 javaScript,我还添加了一个指向 jsFiddle 的链接:

var i = 1;
var id = setInterval(function () {
    $("ul").children(i).toggleClass('test');
    i++;
    if (i === 4) {
        i = 1;
    }
}, 1000);

http://jsfiddle.net/Svx3n/42/

最佳答案

我发现的两个问题:

使用索引时,索引从零开始,而不是一。

.children(\[selector\])不带索引,它带选择器。所以你要求 jQuery 找到一个类型的元素。而是使用 .eq(index) 来获取元素。

因此对您的代码所做的更改将是:

var i = 0;
var id = setInterval(function () {

    $("ul").children().eq(i).toggleClass('test');

    i++;

    if (i === 4) {
        i = 0;
    }

}, 1000);

更好的是,将选择移出,这样您就不会在每次迭代时都查询 DOM

var i = 0,
    lis = $("ul").children(),
    id = window.setInterval( function () {    
            lis.eq(i).toggleClass('test');    
            i++;    
            if (i === 4) {
                i = 0;
            }    
         }, 1000);

关于javascript - 让 setInterval 处理 html 列表项中的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511493/

相关文章:

javascript - asp.net core 2.0 为特定 View 加载未压缩的脚本

javascript - 如何对单引号进行编码,使其显示在 Fusion Chart 值的标签中?

javascript - 无法理解 lusolve 的工作原理

javascript - 动画 div 的高度以显示整个内容

jquery - Bootstrap 轮播,自动循环然后停止

html - 将 css 添加到 jsx react 脚本的最佳方法?

javascript - 如何通过 Java Servlet 使用 anchor 标记允许多次下载?

jQuery 两个函数,相同的结果,相同的元素

javascript - 关闭模式而不提交监听器

iphone - iPad 中允许的最大缓存