前提
jQueryを使用しています。以下const duration = 1000;
です。
実現したいこと
以下のように【処理A】→【処理B】【処理C】と実行したいです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【処理A】$('.slide_elm').slideDown( duration );
↓ 2000後に以下2つを実行
【処理B】$('.slide_elm').slideUp( duration );
【処理C】$('.animate_elm').animate( {width: 0}, duration );
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
つまり、【処理A】の完了を待ってから【処理B】【処理C】という2つを実行したいです。
さらに言い換えますと、slideUp
しつつ、同時に width: 0;
にしたいということになります。
発生している問題・エラーメッセージ
【処理A】の完了を待ってから、2つを実行する方法がわかりません。
該当のソースコード
まず以下のようにしましたところ
【処理A】→【処理B】【処理C】ではなく
【処理A】→【処理B】→【処理C】になってしまいました。(CはBの完了を待つ必要はありません。)
jQuery
1$('.slide_elm').slideDown(duration).css('display', 'flex').delay(2000).slideUp(duration).queue(function(){ 2 $('.animate_elm').animate( {width: 0}, duration ); 3});
続いてdelay
にコールバックが使えるかと思って以下のようにしましたが実現できませんでした。
jQuery
1$('.slide_elm').slideDown(duration).css('display', 'flex').delay(2000,function(){ 2 $(this).slideUp(duration); //【処理B】 3 $('.animate_elm').animate( {width: 0}, duration ); //【処理C】 4});
またslideDown
のコールバックを利用して以下のようにしましたがこれでも実現できませんでした。
jQuery
1$('.slide_elm').slideDown(duration,function(){ 2 $(this).slideUp(duration); //【処理B】 3 $('.animate_elm').animate( {width: 0}, duration ); //【処理C】 4}).css('display', 'flex').delay(2000);
どのようにすれば、【処理B】しつつ【処理C】と実現できるでしょうか?

回答1件
あなたの回答
tips
プレビュー