0

ユーザーが閉じるボタンをクリックしたときにメッセージを非表示にする単純な機能に取り組んでいます。奇妙なことに、このコードを使用すると、奇妙な 7 秒の遅延を除いてすべて正常に動作します。div を 1000 ミリ秒で不透明度 0 に移行するように設定してから、z-index を変更してすべての背後に置きます。不透明度遷移の遅延を除いて、これはすべて正常に機能します。このコードを使用する場合:

$(".x").bind("click",function() {
    $('#holder').animate({opacity: "0"}, 1000, "easeOutQuart");
      setTimeout(function() {
        $('#holder').css('z-index','-1');}, 1000);

約 7 秒の原因不明の遅延が発生します。コードを次のように変更すると:

$(".x").bind("click",function() {
    $('#holder').css('display','none');
          setTimeout(function() {
            $('#holder').css('z-index','-1');}, 1000);

効果は瞬時です。明らかに、setTimeout 関数はディスプレイではやり過ぎですが、私が知る限り、タイミングの問題とは無関係であることを示しているだけです。

なぜfadeOut()を使用しないのかと尋ねる人もいますが、使用しない理由はありませんが、遅延の問題は変わりません。このコードを使用すると、まだ約 7 秒の遅延があります。

$(".x").click(function () {
  $("#holder").fadeOut("slow");
  });

アニメーションの前に .stop() 呼び出しを追加するなど、さまざまなことを試しました。遅延は紛らわしいですが、関数は全体として機能します。.x をクリックすると、#holder div が (遅延の後に) フェードし、z-index が変更されて、残りの div の後ろになります。関数とメソッドには満足していますが、なぜこんなに劇的な遅延なのか混乱しています。私がメモすることができる唯一の他の項目は、コードがすべてphpファイル内にあり、. なぜそれがそれを変えるのか考えられません。

これに関するアイデアはありますか?

4

1 に答える 1

1

これはうまくいくはずです:

$(".x").bind("click",function() {
    $('#holder').animate({opacity: "0"}, 1000, "easeOutQuart",function(){
        $(this).css('z-index',-1);
    });
});

不透明度プロパティで「easeOutQuart」を使用する目的がわかりません。また、期待する効果もわかりません。ところで、fadeOut()アニメーションの代わりに使用することをお勧めします。

アップデート

何が問題なのかわかりませんが、HTML コードに応じて、これを試してみてください。

$(".x").click(function (e) {
  e.stopPropagation();
  $("#holder").fadeOut("slow");
  });
于 2013-01-03T10:16:40.647 に答える