Jquery/animate.css 侧边菜单在多次切换时消失
Jquery/animate.css side menu disapearing when toggled more than once
我有一个弹出的侧边菜单,它有以下触发器:
<a href="#" id="cmdAsideMenu" class="dropdown-toggle dropdown-form-toggle" title="Open slidebar">
<i class="fa fa-outdent"></i>
</a>
<section id="asideMenu" class="aside-menu right">
<div class="sidebar-content"></div>
</section>
这将使用以下 jQuery 添加或删除相应的 CSS 类以执行动画输入/输出效果。
$(document).on("click", "#cmdAsideMenu, #btnHideAsideMenu, .navbar-toggle-aside-menu", function () {
if ($("#asideMenu").is(":visible")) {
$("#asideMenu").removeClass('animated bounceInRight');
$("#asideMenu").addClass('animated bounceOutRight');
$('#asideMenu').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
$(this).hide();
$("#asideMenu").removeClass('animated bounceOutRight');
});
}
else {
$("#asideMenu").show().addClass('animated bounceInRight');
}
return false;
});
这在第一次工作正常。但是,如果在显示和隐藏菜单后再次单击触发链接(#cmdAsideMenu);它显示,但紧接着又消失了。
如何修改此代码,以便菜单可以反复打开和关闭?
干杯丹尼
尝试优化触发器条件语句,使其基于类而不是:visible
参数表。 您可能希望使用类,因为它们具有更精确的性质,其中 CSS 结果可能是零星的。
所以而不是if ($("#asideMenu").is(":visible")) {
用
if ($('.animated').length < 1) {
.
然后,对于 else 条件,您将使用 if ($('.animated').length > 0) {
.
最后,我假设您使用的是 .one()
方法,因为您的动画中可能存在计时影响。 这很好,但是如果您继续遇到问题,您可能需要分别考虑原版JavaScript方法setInterval()
和setTimeout()
。 同样,这是因为后面提到的方法提供了更绝对的控制,您可以clearInterval()
硬停止该功能。
相关文章:
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- JavaScript下拉菜单-部件在Mac上消失
- 通过单击同一图标使菜单出现和消失
- 下拉菜单在我进入链接之前消失了
- ExtJS5 菜单面板在面板失去焦点时消失
- 如何使下拉菜单在一定时间后消失 JavaScript.
- 滑块菜单消失得太快
- 我想让我的菜单效果消失
- Jquery/animate.css 侧边菜单在多次切换时消失
- 安卓浏览器固定菜单弹出和弹出,网址消失
- 为什么按钮在第一次单击时没有响应,以及为什么菜单在缩减到桌面时消失
- 子菜单消失,不允许我单击链接
- 将鼠标悬停在下拉菜单上时,JQuery 悬停下拉菜单消失
- jQuery:使子菜单在一段时间后出现和消失
- 如何使菜单出现(从左侧开始)并在单击按钮时消失
- 如何使用变换让菜单侧边栏消失和调整内容
- 消失的下拉菜单
- JS折叠菜单上的标头消失
- 背景图像在悬停/鼠标悬停时消失,菜单在IE中不起作用
- 使汉堡菜单消失菜单点击