Как сделать задержку?
Добрый день!
Есть такой код: $("#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сек. Как можно это сделать? Подскажите, пожалуйста. Спасибо! |
|
Белый шум,
приветствую! а как же отдельно сделать задержку для добавления класса .addClass("label_feedback_reklama_active") ? |
Цитата:
setTimeout() https://javascript.ru/settimeout |
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(); } }); то скрипт работает некорректно. Что я делаю не так? |
В callback-функции функции setTimeout контекст (this) больше не указывает на input.
Сохраните ссылку на нужный контекст и используйте её в callback'е, либо юзайте стрелочную функцию. |
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) |
Да, всё разобрался. Всем вам большое-большое спасибо! Удачи!
|
Часовой пояс GMT +3, время: 01:14. |