@Caspergreen

Добавление и удаление класса по истечению времени, на странице — как?

function rainbow() {
        $('.navigation li').each(function(){
         $(this).addClass('selected').delay(90000).removeClass('selected');
         setTimeout (function(){
            $(this).removeClass('selected');
         }, 1000);
        });
      }

Пытаюсь сделать добавление класса selected, в <li> по истечению 9000мс он должен удаляться. Код не хочет работать. Что делаю не так?
  • Вопрос задан
  • 7424 просмотра
Пригласить эксперта
Ответы на вопрос 4
Aliansys
@Aliansys
Что касательно Таймаута, то this в анонимной функции уже будет ссылаться не туда куда вы хотите. Нужно делать либо замыкание, либо использовать .bind, в современных браузерах.

Пример:
setTimeout (function(){
            $(this).removeClass('selected');
         }.bind(this), 1000);

В .bind первым аргументом отдается контекст. Больше можете почитать в гугле )
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
Set a timer to delay execution of subsequent items in the queue.
Ответ написан
Комментировать
Ну, во-первых, 90000 != 9000.
Во-вторых, нафига вам там setTimeout?
Ответ написан
Комментировать
mlnkv
@mlnkv
JavaScript Developer
.delay() - работает только с анимациями
вам надо делать так
function rainbow() {
  $('.navigation li').each(function() {
    $(this).addClass('selected');
    setTimeout (function() {
      $(this).removeClass('selected');
    }, 9000);
  });
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы