0

所以我有一个触发点击按钮的功能(想象一个已发布/未发布的按钮)

因此,一旦函数加载,我就会将元素更改为加载器 gif

function updateStatus(event, status, element, data, action) {

  //init loader
  $("#" + element).find("img").attr("src", "../../img/images/loader.gif"); 

效果很好

然后我做一个ajax请求,我传递数据(所以我可以通过其余的更新数据库)

var request= $.ajax({
    type: 'get',
    url: "../testResponses/status.php",
    data:data

});

再次,一切都很好,然后当请求完成后,我可以更改图像

request.done(function(msg) {


        $("#" + element).find("img").attr("src", "../../img/images/status/"+newStatus+".png");
        $("#" + element).attr("data-user-status", newStatus);

});

看到这仍然是一个概念证明,我想在加载器图像消失之前添加 2 秒延迟,并且我们显示新状态

我试过了

request.delay(2000).done ...

它返回了一个错误并且

$("#" + element).delay(2000).find("img").attr("src", "../../img/images/status/"+newStatus+".png");

这只是没有任何区别..

谁能帮忙?

4

2 回答 2

2

您可以setTimeout()在收到请求后 2 秒内触发逻辑:

request.done(function(msg) {
    setTimeout(function(){
        // change the image
    }, 2000);
});
于 2013-09-02T04:41:17.193 回答
1

另一种解决方案是使用 .delay() 队列

$("#" + element).delay(2000).delay(function (next) {
    $(this).find("img").attr("src", "../../img/images/status/" + newStatus + ".png");
    next();
});
于 2013-09-02T04:47:01.997 回答