отложенная функция добавления / удаления класса не работает - PullRequest
13 голосов
/ 10 февраля 2011

что я здесь делаю?

$(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");
});

Ответы [ 2 ]

41 голосов
/ 10 февраля 2011

Просто добавьте, вы можете использовать .queue:

$('ul li:nth-child(1)').addClass("go")
                       .delay(4500)
                       .queue(function() {
                           $(this).removeClass("go");
                           $(this).dequeue();
                       });
17 голосов
/ 10 февраля 2011

.delay() предназначен только для работы с анимацией.Вам придется прибегнуть к использованию обычных setTimeouts для того, что вы делаете:

var li = $('ul li:nth-child(1)').addClass('go');
setTimeout(function () {
    li.removeClass('go');
}, 4500);

Чтобы сделать это для каждого <li> немного более приятным, вы можете реорганизовать свой код так:*

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