【发布时间】:2011-04-10 23:31:11
【问题描述】:
我已经为此工作了几个小时,但我似乎无法弄清楚如何做到这一点 - 我是 jQuery 新手。
我想淡出一个 div,然后淡入另一个。我想按顺序执行此操作。我已经尝试将fadeIn() 放在fadeOut() 函数的回调中并将两个动画排队,但它们仍然没有按顺序发生。
HTML:
<article id="foo">
<div>one set of content, initially set to "display: block;"</div>
<div id="bar">second set of content, initially set to "display: none;"</div>
<div id="menu">the menu, which I don't want to fade</div>
</article>
这是我尝试过的两种方法:
使用队列():
$("#foo div:not(#bar, #menu)").queue( function() {
$(this).fadeOut('slow');
$(this).dequeue();
$("#foo div#bar").fadeIn('slow')
});
使用回调:
$("#foo div:not(#bar, #menu)").fadeOut('slow', function() {
$("#foo div#bar").fadeIn('slow');
});
这应该相对简单,因为它是我在许多网站上看到的 - 我做错了什么?
【问题讨论】:
-
你的 html 是什么样的?可能有不同的方法可以让事情变得更容易......
-
使用回调会发生什么?我个人在这种方法上取得了成功。退房:paulirish.com/2008/… 一个也许。
-
我的 HTML 是:...一组内容,最初设置为“display:block;”... 第二组内容,最初设置为“display: none;”
-
如果是复制粘贴代码,使用回调的部分有错误,第3行应该是});而不是 )};
-
每个块的选择器看起来很奇怪。我会做 $("#foo") 和 $("#bar")
标签: jquery callback queue fadein fadeout