0

.show( "slow")で表示された後、.animate()を使用していくつかの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")を使用してセクションを表示から外します:none)

.section {
    display: none;
    position: absolute;
    top: 5%;
    left: 5%;
    padding: 20px;
    z-index: 20;
}
4

3 に答える 3

0

最後に答えが見つかりました - 私がする必要があったのは、queue() に渡した関数の最後に dequeue() 関数を含めることだけでした。

助けてくれてありがとう、みんな!

于 2010-01-23T06:32:52.603 に答える
0

Davidがポジショニングについて言ったことに+1。セクションは、相対的に配置された div 内に絶対に配置する必要があります。また、jQuery/Queue メソッドは必要ないと思います。代わりにこれを試してください:

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

これにより、ショーが遅くなった後に animate left が呼び出されます。ショーをどのように処理しているかはわかりませんが、別の関数に残っているアニメーションから同じパターンを使用して、次々と呼び出されたとき、アニメーション関数は2番目のキュー関数内からまったく呼び出されませんでした.

jQuery ドキュメントで読んだ内容に基づいて、すべてのアニメーション関数が組み込みの fx キューに自動的に追加されるようです。

于 2010-01-23T06:10:47.327 に答える
0

私の推測では、「position: relative;」のスタイルが必要です。または「位置: 絶対;」CSS に追加されます。

コードを実行しようとしましたが、何も表示されませんでした。しかし、Firebug の HTML タブを使用してこのページを確認したところ、ほとんどのページで style="left: 140px" などの形式になっていることがわかりました。

于 2010-01-23T05:30:29.737 に答える