我缺乏睡眠,不确定我是否可以使用toggleClass。但这是我的代码:
$(document).ready(function() {
// Slide Mobile Filter Sidebar On Screen
$('#showFilters').on('click', function () {
$('.filter-sidebar--mobile__close').attr('class', 'filter-sidebar--mobile__close');
$('.filter-sidebar--mobile')
.removeClass('slide-out-right is-hidden') // Remove previously added animation remove display none
.addClass('slide-in-right '); // Add animation
});
// Slide Mobile Filter Sidebar Off Screen
$('.filter-sidebar--mobile__close').on('click', function() {
$('.filter-sidebar--mobile')
.addClass('slide-out-right') // Add animation
.delay(380) // Delay for animation duration -.02s
.queue(function() {
$('.filter-sidebar--mobile').addClass('is-hidden'); // Hide after animation finishes
});
// Hide Close Button for Mobile Filter
$('.filter-sidebar--mobile__close').attr('class', 'filter-sidebar--mobile__close is-hidden');
});
});
此代码仅在一个完整周期内有效。
会发生什么;
答案 0 :(得分:1)
根据JQuery文档:
请注意,在使用.queue()添加函数时,我们应该确保最终调用.dequeue(),以便行中的下一个函数执行。
因此,在队列回调中,您的代码应为:
$('.filter-sidebar--mobile')
.addClass('is-hidden')
.dequeue();
或者:
从jQuery 1.4开始,被调用的函数将另一个函数作为第一个参数传递。调用时,会自动使下一个项目出列并使队列保持移动状态。我们按如下方式使用它:
.queue(function(next) {
$('.filter-sidebar--mobile').addClass('is-hidden'); // Hide after animation finishes
next();
});
答案 1 :(得分:0)
您在查询课程时错过了点号
$('filter-sidebar--mobile').addClass('is-hidden');
将其更改为
$('.filter-sidebar--mobile').addClass('is-hidden');