Jquery 延迟的addclass/remove class函数不工作

Jquery 延迟的addclass/remove class函数不工作,jquery,addclass,Jquery,Addclass,我在这里干什么 $(function() { $('ul li:nth-child(1)').addClass("go").delay(4500).removeClass("go"); $('ul li:nth-child(2)').addClass("go").delay(1500).removeClass("go"); $('ul li:nth-child(3)').addClass("go").delay(500).removeClass("go"); $('ul li:nth-child

我在这里干什么

$(function() {
$('ul li:nth-child(1)').addClass("go").delay(4500).removeClass("go");
$('ul li:nth-child(2)').addClass("go").delay(1500).removeClass("go");
$('ul li:nth-child(3)').addClass("go").delay(500).removeClass("go");
$('ul li:nth-child(4)').addClass("go").delay(4500).removeClass("go");
$('ul li:nth-child(5)').addClass("go").delay(1000).removeClass("go");
});
.delay()
仅设计用于处理动画。您必须使用常规设置超时来完成您正在做的事情:

var li = $('ul li:nth-child(1)').addClass('go');
setTimeout(function () {
    li.removeClass('go');
}, 4500);
要使对每个
  • 执行此操作更愉快一些,您可以像这样重构代码:

    $(function () {
        var delays = [4500, 1500, 500, 4500, 1000];
        $('ul li').addClass('go').each(function (i) {
            setTimeout(function (li) {
                li.removeClass('go');
            }, delays[i], $(this));
        });
    });
    

    只需添加,您可以使用:


    一点解释都没有用。我猜您试图通过在每个项目的不同延迟后设置它,以特定顺序更改列表的类。什么位不起作用?.delay()只延迟动画,而不延迟函数我正在创建一个动画,其中我将显示一组列表项:无;然后,我需要向每个列表项添加一个类,一次添加一个,时间是预先确定的,只有在时间过去之后,该类才会被删除并添加到下一个列表项中。在这一点上,相同的类将被添加到下一个列表项中,并持续完全不同的预定时间。对于sthx来说,它有点有效。。。如果您看到所有类都在同一时刻应用(它们在完全相同的时间变为蓝色),那么它们都会在不同的时间间隔消失。我需要这个类只应用于一个列表项,一旦时间过去了,它就会应用于下一个列表项啊,我忘记了这个+1。不过,别忘了
    .dequeue()
    next()
    !这仍然是同一个问题-类同时被添加到列表项中…然后在不同的时间被删除检查:@BizarroZeldman This fiddle似乎正好演示了我所期望的行为,因为每个li的延迟设置具有不同的值。
    $('ul li:nth-child(1)').addClass("go")
                           .delay(4500)
                           .queue(function() {
                               $(this).removeClass("go");
                               $(this).dequeue();
                           });