I made a little fiddle to illustrate the problem.
Basiaclly这有效:
var visible = $('#container').find(' > div:visible'),
hidden = $('#container').find(' > div:hidden');
visible.fadeOut(1000, function() {
});
setTimeout(function() { hidden.fadeIn('slow') },1000);
而这不是:
var visible = $('#container').find(' > div:visible'),
hidden = $('#container').find(' > div:hidden');
visible.fadeOut(1000, function() {
hidden.fadeIn(100)
});
第二种方式会使页面冻结。
我使用回调的方式有问题吗?
我需要能够将它放在动画队列中,因为我需要能够stop()
一切。
有没有办法让这项工作?我在Chrome和FF上打破了
答案 0 :(得分:4)
第二个解决方案中的问题是,将为每个可见div启动动画,并且对于每个动画(已完成),所有隐藏的div都会启动动画淡入淡出。
答案 1 :(得分:0)
呃,首先,你为什么要使用这样的结构:
$('#container').find(' > div:visible');
只需使用:
$('#container > div:visible');
其次,不要使用#container
,因为出于某种原因,如果为 301 元素点火fadeOut太多了。
从头开始,我看到jsfiddle已被更改,现在它只是其中的一个元素。它之前崩溃并不奇怪 - 太多的物体。
第三,在fadeOut之后没有任何消息因为在你指定隐藏变量的时候没有隐藏的div。你必须在你的回调中使用它:
$('#container2 > div:hidden').fadeIn(1000)