0

我正在使用 .animate() 在通过 .show("slow") 使它们可见后平滑地重新定位一些 div。由于 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;
}
4

3 回答 3

0

我最好的猜测:你需要一种“位置:相对;”的风格 或“位置:绝对;” 添加到您的 CSS 中。

我试图运行代码,但什么也没看到。但是,当我使用 Firebug 的 HTML 选项卡查看页面时,我看到它们中的大多数都有一个 style="left: 140px" 或类似的。

于 2010-01-23T05:30:29.737 回答
0

+1 大卫所说的定位。您的部分可能应该绝对定位在相对定位的 div 内。另外,我认为您不需要 jQuery/Queue 方法。试试这个:

$(".section.active").each(function() {
    $(this).show("slow", function() {
    $(this).animate({ "left": left }, "slow");
    left += $(this).width() + margin;
    });                
}); 

这将导致动画在显示缓慢后被调用。我不知道你是如何处理这个节目的,但是当我在一个单独的函数中使用你在动画中的相同模式,然后一个接一个地调用时,动画函数根本没有从第二个队列函数内部调用。

根据我在jQuery 文档中阅读的内容,看起来所有动画功能都自动添加到内置 fx 队列中。

于 2010-01-23T06:10:47.327 回答
0

终于找到了答案——我需要做的就是在传递给 queue() 的函数末尾包含 dequeue() 函数。

谢谢你们的帮助,伙计们!

于 2010-01-23T06:32:52.603 回答