如果在animate()之后设置hide()jquery animate函数,它不起作用?

hh5*_*188 4 javascript jquery hide jquery-animate

首先,我有一个iframe的动画,id是"test"

<iframe id="test" src=""></iframe>
Run Code Online (Sandbox Code Playgroud)

然后我想要动画并隐藏它,像MacOS一样产生近距离效果:

$('#test').animate({
                'width':0,
                'height':0,
                'top':$('input').offset().top,
                'left':$('input').offset().left
            },function(){
                //$(this).hide();        
            }).hide();
Run Code Online (Sandbox Code Playgroud)

但似乎iframe无法隐藏.但是,如果我在动画中的回调函数中编写它,这是上面带注释的代码.它可以再次工作.

这是在线案例

所以我想知道为什么animate()之后的hide()不起作用?我想念一些东西吗?

Jac*_*kin 10

为了回答你的问题,调用之后立即.hide()执行调用,因此调用实际发生动画完成之前(异步运行) - 这就是jQuery为你提供回调函数的原因,这样你就可以得到通知动画完成..animate().hide().animate()

$('#test').animate({
            'width':0,
            'height':0,
            'top':$('input').offset().top,
            'left':$('input').offset().left
        }, function(){
             $("#test").hide();
        });
Run Code Online (Sandbox Code Playgroud)

jsFiddle上也为你保存了这个