首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery动画之后的按钮丢失单击事件

问jQuery动画之后的按钮丢失单击事件
EN

Stack Overflow用户
提问于 2017-03-29 05:13:10
回答 1查看 28关注 0票数 0

我有一个问题,只有当我点击快速按钮时才会发生,我认为它必须与动画有关,但我不确定。

这是滑出的侧边菜单的DOM。

页面上有一个汉堡包菜单按钮。此按钮负责启动幻灯片菜单。

代码语言:javascript
复制
<a class="btn-hamburger btn-ripple btn-menu" href="#">
    <i class="material-icons">menu</i>
</a>

在DOM树的某个地方,也有slide out menu defained,在该菜单中,我们可以看到,我们有与开始按钮几乎相同的按钮。

代码语言:javascript
复制
<div class="side-menu-overlay hidden">
    <div class="side-menu">
        <div class="side-menu-header">
            <a class="btn-hamburger btn-ripple btn-menu" href="#">
                <i class="material-icons">menu</i>
            </a>
        </div>
    </div>
</div>

这是我的jQuery,它做动画。正如您从上面的DOM中所看到的,对于开始处的菜单按钮和滑出菜单中的菜单按钮,都会触发此事件。按钮是滑出还是滑入取决于应用于托管滑出菜单的覆盖的“隐藏”类。

代码语言:javascript
复制
$(document).on('click', '.btn-menu', function (e) {
    if (sideMenuOverlay.hasClass('hidden')) {
        sideMenuOverlay.removeClass('hidden');
        sideMenuOverlay.animate({
            opacity: 1
        }, 200, function () {
            sideMenu.animate({
                 marginLeft: 0
            }, 250);
        });
    }
    else {
        sideMenu.animate({
            marginLeft: -240
        }, 200, function () {
            sideMenuOverlay.animate({
                opacity: 0
            }, 300, function () {
                sideMenuOverlay.addClass('hidden');
            });
        });
    }
});

出现的问题是汉堡包菜单不再触发单击事件。如果我在中间暂停的情况下缓慢地单击菜单,它将一直工作。一旦我开始点击快速(快速滑出和快速滑入),汉堡菜单将不再触发事件。有趣的是,它总是在开始时的菜单按钮,所以这意味着当覆盖是可见的和菜单是不是。

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 05:32:28

我以前遇到过很多这个问题,我发现有效的解决方案是在.animate()前面使用.stop()。

查看此页面:http://api.jquery.com/stop/

这将阻止动画队列堆叠事件并清除事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43080069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档