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 に答える