2013-12-01 3 views
1

У меня есть AJAX происходит некорректно/JQuery скрипт:задержка JQuery не работает

function changeModalBodyContent(content,time) { 
     $(".modal-body").empty(); 
     $(".modal-body").delay(time).html(content); 
    } 
    //twitter bootstrap script 

    $("button#delete").click(function() { 
     var modalText = $(".modal-body").html(); 

     changeModalBodyContent("<div class='progress progress-striped active'><div class='progress-bar' style='width:100%;'></div></div>",0); 

     $.ajax({ 
      type: "GET", 
      url: "deleteArticleType.php", 
      data: { 'typeID': lastClickId }, 
      success: function (msg) { 
       $("#myModal").modal('hide'); 
       $("tr[data-id='" + lastClickId + "']").remove(); 
       $("#message-placeholder") 
       .html("<div class='alert alert-dismissable alert-success'><button type='button' class='close' data-dismiss='alert'>×</button><strong>sucess!!!</strong></div>"); 
       changeModalBodyContent(modalText,2000); 
      }, 
      error: function() { 
       alert("Error!"); 
      } 
     }); 

    }); 
}); 

Я хочу, чтобы текст во втором вызове для функции changeModalBodyContent будет отображаться после того, как когда-то и не сразу, я попробовал код но это не сработало.

Почему и как я могу это исправить?

ответ

4

Задержка была построена для анимации очередей, но вы можете использовать queue:

http://api.jquery.com/queue/#queue-queueName-callback-next-

.queue ([ИмяОчереди], обратный вызов (следующий))

$(".modal-body").delay(time).queue(function(next){ 
     $(this).html(content); 
     next() 
    }); 

Обратите внимание, что Zepto.js не поддерживает ни delay, ни queue.

+0

Как показывает ваш ответ, очередь предназначена не только для анимаций - она ​​может использоваться для любых действий, которые должны выполняться последовательно. – joews

Смежные вопросы