0

ユーザーが送信ボタンをクリックしたときに読み込みイメージを作成しようとしています。なんらかの理由で、hide イベントが show イベントと同時に実行されるようです (読み込み中のイメージがまったく表示されません。hide に遅延を追加しようとしましたが、機能しませんでした)。ただし、hide イベントを削除すると、読み込み中の画像は問題なく表示されます。何か案は?助けてくれてありがとう。

$('#submitButton').click(function() {
    $("#loading-popup").ajaxStart(function() {
        $(this).show();
    }); //show loading image
    //.....................
    $.ajax({
        type: 'POST',
        dataType: "json",
        //.....................
        success: function(jsonData) {
            //.....................
            $("#loading-popup").delay(15000).hide(); //hide loading image
            //.....................
        },

    });
});
4

2 に答える 2

2

.hide()パラメータなしは、 に似た同期アクション.css('display', 'none')です。これはアニメーションではないため、アニメーションの遅延には従いません。

簡単な解決策は、単純0に期間として渡すことです。これにより.hide()、遅延に従うアニメーション バージョンがトリガーされます。

​$('#foo').​​​​delay(2000).hide(0);​

フィドル

jQuery の一部のバージョンでは期間としての受け渡し0にバグがあることに注意してください。問題が見つかった場合は、バージョン 1.8.2 または最新の安定版リリースにアップグレードしてください。setTimeout遅延が必要な場合は、a を使用することもできますが、それは余分な混乱になります。

于 2012-10-28T22:23:00.003 に答える
1
$('#submitButton').click(function() {

  $.ajax({
      type: 'POST',
      dataType: "json",
      beforeSend:  $("#loading-popup").show(); 
      //.....................
      success: function(jsonData) {
          //.....................
          $("#loading-popup").hide(); //hide loading image
          //.....................
      },

  });
});
于 2012-10-28T22:23:09.613 に答える