6

次のコードを使用してdivをアニメーション化しています。

<script>
  $(function() {
    $("a.shift").click(function() {
      $("#introOverlay").animate({
        height: 0,
      }, 2000)
    });
  });
</script>

アニメーションが終わったら削除したいと思います。どうやってやるの?

4

4 に答える 4

9

animateはさらに2つのパラメータを取るので、次のことができます。

$("a.shift")
    .click(function() 
        {
            $("#introOverlay")
                .animate({height: 0}, 2000,"linear",function()
                    {
                        $(this).remove();
                    }
                )
        }
    );

テストされていません。

編集:テスト済み:これが私が使用した全ページです。これは300pxに拡張され、削除がより明確になります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            //<![CDATA[
            $(document).ready(function()
            {
                $(".shift").click(function() 
                {
                    $("#introOverlay")
                    .animate({height: 300}, 2000,"linear",function()
                    {
                        $(this).remove();
                    })
                });
            });
            //]]>
        </script>
    </head>
    <body>
    <a class="shift" href="javascript:void(0)">clickme</a>
    <div id="introOverlay" style="background-color:red;height:200px;">overlay</div>
    </body>
</html>
于 2009-09-16T12:17:02.747 に答える
3

JQuery animate(params、[duration]、[easing]、[callback])は、アニメーションが完了するたびに呼び出されるコールバックを追加する可能性を提供します

callback(オプション)関数:アニメーションが完了するたびに実行される関数で、アニメーション化された要素ごとに1回実行されます。

構文はほとんどjQueryで簡単です。

<script>
$(function() {
    $("a.shift").click(function() {
        $("#introOverlay").animate({
        height: 0,
        }, 2000, "linear",
            function() {
                $("#introOverlay").hide();
            }
        )
        });

    })
</script>

このSOの質問も参照してください

于 2009-09-16T12:10:13.417 に答える
3

remove()次のように、呼び出しをエフェクトキューに入れます。

$("a.shift").click(function() {
  $("#introOverlay").animate({
    height: 0,
  }, 2000);
  $("#introOverlay").queue(function() {
    $(this).remove();
    $(this).dequeue();
  });
});
于 2013-03-31T17:54:01.687 に答える
-2

アニメーションと同じ時間でwindow.timeoutを使用します。

于 2009-09-16T12:07:16.830 に答える