Как сделать задержку?
Добрый день!
Есть такой код:
$("#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, время: 03:09. |