【问题标题】:jQuery: preventing event from executing for duration of animationjQuery:防止事件在动画期间执行
【发布时间】:2009-10-16 10:28:45
【问题描述】:

好的,我已经检查了这个帖子:

Prevent click event in jQuery triggering multiple times

  • 并尝试按照描述取消绑定/重新绑定事件,但无济于事。我基本上有一个滑块库,带有下一个/上一个按钮。我想防止在动画期间单击下一个按钮。

    prev = $("#portfolio_nav_prev");
    next = $("#portfolio_nav_next");
    
    function nextAnim(){
        //remove handler
        next.unbind();
    
        gallery_frame.animate({scrollLeft:targetPos}, 300, 'easeInOutQuart',function(){next.bind(nextAnim)});
        return false;
        }
    

有什么想法吗?

【问题讨论】:

  • 为什么要创建一个无响应的界面?相反,您应该只在单击按钮时 .stop() 当前动画。
  • 因为界面需要在接受更多事件之前完成一个滑块动画,否则会破坏滑块。

标签: jquery events animation slider


【解决方案1】:

这是我最终使用的解决方案 - 问题是该元素是一个锚点,所以当我取消绑定点击动画时 - 它试图导航离开页面,从而破坏了动画。

所以,我解除绑定事件,然后点击绑定返回false:

next.unbind();
next.click(function(){return false;})

然后在动画回调中做同样的事情,但将它绑定回动画。

gallery_frame.animate({scrollLeft:targetPos}, 300, 'easeInOutQuart',
function()next.unbind();next.bind('click',nextAnim)});

但是,我认为真正的解决方案是首先用一些非锚元素制作下一个/上一个按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多