jquery show/hide 不会等待完成

jquery show/hide doesn't wait for completion

本文关键字:等待 show hide jquery      更新时间:2023-09-26

我正在尝试定期:

  1. 从 ajax 调用中获取数据
  2. 将数据与div 的内容进行比较
  3. 如果数据 !=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>
...
问题是在完全

隐藏div 之前,div 内容被新数据替换,即使回调函数 replace() 提供给 hide() 函数也是如此。

如何使hide()函数在调用replace()函数之前等待其完成(在本例中为400毫秒)?

我也尝试了 delay() 和 setTimeout(),但它做同样的事情。

谢谢

我认为你不需要那个replace函数。无论如何,这应该有效:

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

SEE JSFIDDLE (没有 ajax 调用)