我想隐藏所有孩子,然后追加otherChild。问题有时是先发生append(),然后发生hide()(Chrome,Firefox)。

我的期望:

Parent
Other child


但有时会打印:

Parent
Child


实际上,如果我在IE9中运行此代码,它将始终打印:

Parent
Child


完整代码

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.0.js'></script>

<script type='text/javascript'>
$(document).ready(function(){
    // Hide children.
    $(".parent").children().hide();

    // Append more child.
    $(".parent").append("<div class=\"otherChild\">Other child</div>");
});
</script>
</head>

<body>
    <div class="parent">
        Parent
        <div class="child">
            Child
        </div>
    </div>
</body>
</html>

最佳答案

Demo Fiddle

hide()-Reference使用回调

.hide('duration',callback)


第一个参数采用事件的持续时间。如果要快速隐藏事件,请在此字段中使用0
第二个回调,它在hide事件完成后执行。




$(document).ready(function(){

    $(".parent").children().hide(0, function() {
        $(".parent").append('<div class="otherChild">Other child</div>');
    });
});

关于jquery - append()发生在hide()之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24320000/

10-12 18:30