次のjQueryコードのスニペットを使用してAJAXリクエストを実行しています。
$.ajax({
url: page,
context: $(pageContent),
beforeSend: function(){
$(pageContent).css('opacity', '0');
},
success: function(html){
$(pageContent).html(html);
},
complete: function(){
$(pageContent).css('opacity', '1');
}
});
また、不透明度の変化が0.25秒の間にフェードインおよびフェードアウトするようにCSS3トランジションを設定しました。望ましい結果は、(リンクをクリックした後)ページのセクションがフェードアウトし、次にコンテンツが置き換えられ、最後にセクションが再びフェードインする(新しいコンテンツが表示される)ことです。
問題は、フェードアウト遷移が完了する前に、コンテンツがAjax回答に置き換えられることです。
CSS3の移行が完了した後にのみAJAXリクエストを起動するにはどうしますか?
さまざまなスレッドを読んで、この解決策を検討しました。
box.addEventListener(
'transitionEnd',
function( event ) {
alert( "Finished transition!" ); // here I could launch my Ajax request
}, false );
このようなものを使用して、フェードアウトが終了したときにのみajaxリクエストを起動できますが、次のようになります。
- $ .ajaxメソッドの外側の最初の遷移を処理する必要があります(したがって、beforeSendメソッドを削除します)
- 不透明度の遷移だけを聞く方法がわかりません
- 現在、リンクのクリックによってトリガーされているため、ajaxリクエストがトランジションによってトリガーされることは私にはあまり意味がありません。
jQueryアニメーション関数も調べましたが、CSS3トランジションを使用していないようです。
どんな助けでも大歓迎です