jQuery一次突出显示一个

时间:2011-11-05 01:44:37

标签: jquery foreach highlight

我尝试在点击li后向button元素添加一个类。 目标是一次添加一个类,延迟时间介于两者之间。它似乎适用于fadeOut函数,但不适用于addClass或相关函数。

这是一个Jsfiddle.net演示http://jsfiddle.net/4ANCj/3/

和部分代码

$("button").click(function() {
    $('li').each(function(index) {
        $(this).delay(900*index).addClass("hi");
    });
});

我知道这里有一个similar问题,但它没有削减它。

1 个答案:

答案 0 :(得分:2)

addClass不是动画功能,因此不会添加到效果队列中。您可以改为使用.queue [docs](默认情况下添加到效果队列):

$(this).delay(900*index).queue(function(next) {
    $(this).addClass("hi");
    next();
});

或者使用setTimeout [MDN]作为非jQuery解决方案:

$("button").click(function() {
    var lis = $('li').get();

    function run() {
        var li;
        if(li = lis.shift()) {
            $(li).addClass('hi');
            setTimeout(run, 900);
        }
    }

    setTimeout(run, 900);
});