Почему не срабатывает метод “delay” (jQuery)?

281
22 июня 2017, 05:05

$(".user-panel-header .user-panel__head").click(function(e) { 
  e.preventDefault(); 
  $(this).toggleClass("user-panel__head_active"); 
  $(".user-panel__user-menu").slideToggle(500); 
  if ( $(".user-panel-header .user-panel__head").hasClass("user-panel__head_active") ) { 
    $(".user-panel-header .user-panel__head").css({"background":"#5f8898"}); 
  } else { 
    $(".user-panel-header .user-panel__head").delay(500).css("background","transparent"); 
  } 
});

Answer 1

Функция .delay() устанавливает задержку перед выполнением очередной функции в очереди. Вы можете поставить свою функцию в очередь с помощью .queue().

$(".user-panel-header .user-panel__head").delay(500).queue(function (next) { 
  $(this).css("background", "transparent");
  next();
});

Такой способ может оказаться более удобным, чем .setTimeout(), в случае если нужна более сложная манипуляция с элементами. Например,

$(selector)
    .delay(500)
    .queue(function (next) { /* что-то делаем */ })
    .delay(500)
    .fadeOut();
Answer 2

Вот выдержка из документации jQuery:

Команда .delay() позволяет установить время задержки выполнения следующих функций анимационных эффектов в очереди для каждого элемента набора jQuery

В твоем случае тебе нужно сделать просто задержку выполнения кода через

setTimeout(function() {
     $(".user-panel-header .user-panel__head").css("background","transparent");
}, 500)
READ ALSO
Передать строку в функцию [дубликат]

Передать строку в функцию [дубликат]

На данный вопрос уже ответили:

240
Как убрать <script src="libs/…/…js</script>

Как убрать <script src="libs/…/…js</script>

Всем привет! Подскажите возможно ли отключить скрипт, который вызывает всплывающий модальный диалог, при уходе посетителя с сайта

240
transition не работает

transition не работает

Есть такой кодСмотрится тут он криво, но суть в том, что при нажатии input блок section становится видимым, но, я хочу, чтобы появлялся блок с эффектом...

365
Зигзаговый border в CSS

Зигзаговый border в CSS

Нужно сделать зигзаговую границу блока (из треугольников)

415