私は定期的にしようとしています:
- ajax 呼び出しからデータを取得する
- データを div の内容と比較する
- 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() も試しましたが、同じことを行います。
ありがとう