jQuery .delay не задерживает

0

Как установить html элемента, подождать 2 секунды, а затем установить html на что-то еще?

Пример: $("div").html("clicked").delay(2000).html("2 seconds have passed");

Что происходит: div получает "2 секунды, прошедшие" с места в карьер, вместо того, чтобы говорить "нажал" в течение 2 секунд, после чего отобразится "Прошло 2 секунды".

Мне нужно сделать что-то вроде .delay(2000, function() { $("div").html("2 seconds have passed"); })?

Пример в прямом эфире: http://jsbin.com/UfaYusU/1/edit

Благодарю!

Теги:
delay

3 ответа

3
Лучший ответ

$.delay используется для задержки анимации в очереди, а не для остановки выполнения.

Попробуй это:

setTimeout(function() {
      // Do something after 2 seconds
}, 2000);
2

.delay() по умолчанию работает только с анимационными функциями, вы можете использовать .promise():

$("div").html("clicked").delay(2000).promise().done(function() {
    $(this).html("2 seconds have passed");
});
  • 0
    «работает только с анимационными функциями», не так, насколько я знаю. Работает на все, поставленные в очередь
  • 0
    @ A.Wolff Да, технически это правильно, я имел ввиду по умолчанию .
Показать ещё 4 комментария
0

Используйте setTimeout() если вы хотите запустить некоторый код после задержки...

$("button").click(function(e) {
  $("div").html("clicked");
  setTimeout(function() {
    $("div").html("2 seconds have passed");
  }, 2000);
});

Здесь обновленная версия вашего jsbin...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню