Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2018, 09:10
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Как сделать задержку?
Добрый день!
Есть такой код:
$("#feedback_reklama_options input[type='checkbox']").click(function(){
  $(".feedback_reklama_option").hide();
  $(".feedback_reklama_all").hide();
  $("#feedback_reklama_options label").removeClass("label_feedback_reklama_active");
  $("#feedback_reklama_options input[type='checkbox']").not(this).each(function(){
    this.checked = false;  
  });
  if (this.checked) {
    $("." + $(this).data("blockclass")).show();
    $(this).closest("label").addClass("label_feedback_reklama_active");
    $(".feedback_reklama_all").show();
  }
});

Подскажите, пожалуйста, как правильно сделать задержку? Мне нужно, чтобы строки
$("." + $(this).data("blockclass")).show();
и
$(".feedback_reklama_all").show();
выполнялись с задержкой в 3сек,

а строка
$(this).closest("label").addClass("label_feedback_reklama_active");
с задержкой в 5сек.

Как можно это сделать? Подскажите, пожалуйста. Спасибо!

Последний раз редактировалось LADYX, 15.02.2018 в 09:12.
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2018, 09:36
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

$("." + $(this).data("blockclass")).delay(3000).show(0);

Очередь предстоящих функций

Последний раз редактировалось Белый шум, 15.02.2018 в 09:38.
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2018, 09:54
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Белый шум,
приветствую! а как же отдельно сделать задержку для добавления класса .addClass("label_feedback_reklama_active") ?
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2018, 10:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от LADYX
а как же отдельно сделать задержку
Использовать метод
setTimeout()

https://javascript.ru/settimeout
Ответить с цитированием
  #5 (permalink)  
Старый 15.02.2018, 13:11
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

ksa,
если делаю так
$("#feedback_reklama_options input[type='checkbox']").click(function(){
  $(".feedback_reklama_option").hide();
  $(".feedback_reklama_all").hide();
  $("#feedback_reklama_options label").removeClass("label_feedback_reklama_active");
  $("#feedback_reklama_options input[type='checkbox']").not(this).each(function(){
    this.checked = false;  
  });
  if (this.checked) {
    $("." + $(this).data("blockclass")).delay(3000).show();
setTimeout(function () {
    $(this).closest("label").addClass("label_feedback_reklama_active");
}, 5000)
    $(".feedback_reklama_all").delay(3000).show();
  }
});

то скрипт работает некорректно.
Что я делаю не так?
Ответить с цитированием
  #6 (permalink)  
Старый 15.02.2018, 13:14
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

В callback-функции функции setTimeout контекст (this) больше не указывает на input.
Сохраните ссылку на нужный контекст и используйте её в callback'е, либо юзайте стрелочную функцию.
Ответить с цитированием
  #7 (permalink)  
Старый 15.02.2018, 15:03
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

LADYX,

1) $("." + $(this).data("blockclass")).delay(3000).show(0);
Вроде бы duration надо передавать show когда она после .delay идёт, хотя могу ошибаться.

2) Попробуйте так:
setTimeout(function (t) {
    $(t).closest("label").addClass("label_feedback_reklama_active");
}, 5000, this)
Ответить с цитированием
  #8 (permalink)  
Старый 15.02.2018, 16:54
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Да, всё разобрался. Всем вам большое-большое спасибо! Удачи!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать задержку отправки формы на javascript? Akimserg Общие вопросы Javascript 12 19.10.2015 13:15
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14