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

时间:2011-01-01 11:34:22

标签: javascript jquery hide jquery-animate

首先,我有一个idrame动画,id为“test”

<iframe id="test" src=""></iframe>

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

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

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

Here is online case

所以我想知道为什么animate()之后的hide()不起作用?我错过了什么吗?

2 个答案:

答案 0 :(得分:10)

要回答您的问题,在致电.hide()后,.animate()的电话会立即立即执行,因此.hide()调用实际发生动画完成之前,(.animate()以异步方式运行) - 这就是jQuery为您提供回调函数的原因,以便您可以通知动画何时完成。

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

在[{3}}

上为您保存此内容

答案 1 :(得分:0)

opacity设置为hide,它会起作用:

$('#mask').click(function () {            
    $('#mask').fadeOut(500);
    $('#test').animate({
        opacity: 'hide',
        'top':$('input').offset().top,
        'left':$('input').offset().left,
    },3000);

});