jquery show / hide不等待完成

时间:2013-11-13 14:43:10

标签: javascript jquery hide show

我正在尝试定期:

  1. 从ajax调用中获取数据
  2. 将数据与div的内容进行比较
  3. 如果数据!= div的内容:隐藏div,更改数据,显示div
  4. 这是我的代码:

    ...
    
    <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()函数也是如此。

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

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

    由于

1 个答案:

答案 0 :(得分:0)

我认为您不需要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调用)