在通过.show("slow")使一些div可见之后,我使用.animate()来平滑地重新定位它们。由于div可能仍在执行动画,也可能不在执行动画,因此我还使用.queue()来确保在动画完成后发生移动。
问题:.animate()不起作用。它会找到正确的代码行,但不会做任何事情,也不会生成任何错误。帮助?
Javascript:
function arrange_sections() {
var margin = 20;
var left = margin;
$(".section.active").queue(function() {
$(".section.active").each(function() {
$(this).animate({ "left": left }, "slow");
left += $(this).width() + margin;
});
});
}CSS:
(我使用show("slow")将部分显示出来:无)
.section {
display: none;
position: absolute;
top: 5%;
left: 5%;
padding: 20px;
z-index: 20;
}发布于 2010-01-23 14:32:53
最终找到了答案--我所需要做的就是在传递给queue()的函数末尾包含dequeue()函数。
谢谢你们的帮助,伙计们!
发布于 2010-01-23 13:30:30
我最好的猜测是:您需要在CSS中添加"position: relative;“或"position: absolute;”样式。
我试着运行代码,但什么也没看到。然而,当我使用Firebug的HTML标签查看页面时,我发现大多数页面都有一个“style=:140px”或类似的内容。
发布于 2010-01-23 14:10:47
+1对于David所说的定位。您的部分可能应该绝对定位在相对定位的div中。此外,我认为您不需要jQuery/Queue方法。试着这样做:
$(".section.active").each(function() {
$(this).show("slow", function() {
$(this).animate({ "left": left }, "slow");
left += $(this).width() + margin;
});
}); 这将导致在显示后调用动画左侧的速度变慢。我不知道你是如何处理这个展示的,但是当我在一个单独的函数中使用了左动画中的相同模式,然后一个接一个地调用时,动画函数根本没有从第二个队列函数中被调用。
根据我在jQuery docs中读到的内容,看起来所有动画函数都会自动添加到内置的fx队列中。
https://stackoverflow.com/questions/2122174
复制相似问题