1

私はJQueryにかなり慣れていないので、フェードアウトしてからロードする際に問題が発生します。

私のコードは次のとおりです。

$("#refresh").live("click", function() {
    $("#postbit").fadeOut("slow");
       $("#postbit").load('load.php').fadeIn("slow");
    return false;
}); 

しかし、それは機能していないようです。以前にfadeOutがなく、ロードするだけで問題なく動作します。しかし、最初にフェードアウトしてからゆっくりとフェードインさせる方法はありますか:)

ありがとう

4

2 に答える 2

3

.fadeOut()、他の多くのjQuery関数と同様に、アニメーションの終了に実行されるコールバック関数を指定できます。

$("#refresh").live("click", function() {
    $("#postbit").fadeOut("slow", function() {
       $("#postbit").load('load.php').fadeIn("slow");
    });

    return false;
}); 

.fadeOut()これにより、フェードアウトアニメーションが終了すると、無名関数(の2番目の引数)内のコードが実行されます。


余談ですが、が.live()廃止されたため、使用しないでください.on()

于 2012-07-13T15:13:19.583 に答える
2

jQuery 1.7以降を使用している場合(おそらく、初めての場合).live、それは悪いだけでなく、後のバージョンでも削除されるため、これ以上使用しないでください。 return falseイベントからも悪いです

// Change this to the known parent of #refresh
// Do you even need delegation?
$("#refresh").closest('*').on('click', '#refresh', function (e) {

   // Callback to fadeOut (after fadeOut): load
   $("#postbit").fadeOut('slow', function () {

      // So you can reference this element without selector later
      var $this = $(this);

      // Callback to load -- takes place after load completes
      $this.load('load.php', function () {
         $this.fadeIn('slow');
      });
   });

   // Prevent click from doing whatever it would normally do on #refresh
   e.preventDefault();
});
于 2012-07-13T15:18:03.167 に答える