トグルであるにもかかわらず、これを 2 つの部分に分解する必要がありました。これは、クラスの追加と削除でアニメーションを異なるものにしたいためです。
アクティブなクラスが追加されたら、UL でアクティブな CSS 遷移が完了するまで (0.2 秒) 待機してから、jQuery を起動する必要があります。
アクティブなクラスが削除されたら、最初に UL 幅のアニメーションを起動し、完了時にアクティブなクラスを削除する必要があります。
このため、今では汚くて安っぽく感じます。シンプルでエレガントなソリューションはありますか?
// toggle filters
$(".filter .toggle").on('click', function () {
if ($('.toggle').hasClass('active')) {
$('.filter ul').animate({
width: 'toggle'
}, 500, function () {
$('.filter .toggle').toggleClass('active');
});
} else {
$('.filter').find('.toggle').toggleClass('active').end()
.find('ul').delay(150).animate({
width: 'toggle'
}, 500);
}
});
これが私のジレンマのフィドルです。