0

私は定期的にしようとしています:

  1. ajax 呼び出しからデータを取得する
  2. データを div の内容と比較する
  3. if data != div のコンテンツ: div を非表示にし、データを変更し、div を表示します

これが私のコードです:

...

<div id="myDiv">old data</div>   
</body>

<script type="text/javascript">

$(document).ready( function() {
    updates();
    done();
});

function done() {
      setTimeout( function() {
      updates(); 
      done();
      }, 5000);
}

function replace(div, content){
    $(div).html(content)
}

function updates() {
    $.ajaxSetup({ cache: false });
    $.getJSON("mywebsite/get_data", function(data) {
        if ( $("#myDiv").html() !== data ){
            $("#myDiv").hide(400, replace("#myDiv", data));
            $("#myDiv").show(400);
        }
    });
}

</script>

...

問題は、コールバック関数 replace() が hide() 関数に提供されている場合でも、div が完全に非表示になる前に、 div コンテンツが新しいデータに置き換えられることです。

replace() 関数を呼び出す前に、hide() 関数がその完了 (この例では 400 ミリ秒) を待機するようにするにはどうすればよいですか?

delay() と setTimeout() も試しましたが、同じことを行います。

ありがとう

4

1 に答える 1