javascript - jQuery 删除/添加类只工作一次
问题描述
我睡眠不足,不确定是否可以为此使用 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');
});
});
此代码仅在一个完整周期内有效。
会发生什么;
- 加载时:没有移动过滤器(如预期的那样)
- 单击#showFilters 按钮
- .filter-sidebar--mobile 从右侧滑入(如预期的那样)
- 点击 .filter-sidebar--mobile__close,.filter-sidebar--mobile 向右滑出(如预期)
- 再次单击#showFilters 按钮
- .filter-sidebar--mobile 从右侧滑入(再次如预期)
- 点击 .filter-sidebar--mobile__close, .filter-sidebar--mobile 动画播放,不过这次没有隐藏
解决方案
根据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();
});
推荐阅读
- django - 将 gte、lte 和 range 与 Django REST 框架一起使用
- sql - 如何通过 with 语句在 postgresql 中加入 3 个表
- javascript - 提交后在另一个 html 页面上显示表单字段值
- php - 如何在我的 HTML 表单中显示选定的用户输入?
- sql-server - 存储过程根据 ID 返回不同的数据
- android - 自定义操作未触发上下文注册的接收器
- ms-access - 托管在远程服务器上的 Microsoft Access accdb 的用户列表
- php - Facebook 抓取 APU $accessToken = $helper->getAccessToken() 没有价值
- python-3.x - Pyzmail/IMAPclient:不知道使用什么键
- javascript - 使用 Sequelize 按相关关键字查找所有图像,其中包含要包含/排除的关键字 ID 值数组