【问题标题】:Stop keydown scrolling from bubbling停止keydown滚动冒泡
【发布时间】:2011-05-22 19:49:28
【问题描述】:

我正在尝试使用 keydown 功能制作一个左右移动的滑块,并将 div 替换为每个 li 特定的内容。但是,当您连续按得太快时,有时内容要么不显示,要么重复自身以及事件冒泡。我已经尝试了一些方法,但没有任何真正有效。网址是http://jackjamesmartin.ninoharris.com/

【问题讨论】:

    标签: javascript jquery events keydown event-bubbling


    【解决方案1】:
    var wait = false;
    function theEvent(){
       if(wait){
         return;
       }
       wait = true;
    
       do somthing
    
       //You need to make sure that this is in the callbacks, ie all events are complete.
       wait = false;
    
      // or setTimeout(function(){wait = false}, xxx )
    }
    

    【讨论】:

    • 我试过这样做,(看看我给出的 URL)。但似乎发生的是,一旦你按右然后左然后它得到错误的宽度。你知道任何其他可能有效的方法吗?我已经尝试过 .stop (但它的作用是在中途停止动画), .stopPropagation (就我尝试过的而言,这没有任何作用)并尝试在运行函数时将变量设置为 true 然后将其设置为错误,但我认为我没有正确地做到这一点。
    • 我知道痛苦,我在使用 Iphone 网络应用程序时遇到了同样的问题,在滑动事件中,计算会完全失控,完全相同的问题。我通过在他们可以按下左右(即滑动)时稍作延迟来解决这个问题。 stackoverflow.com/questions/5380994/…
    • 必须有更好的方法,哈哈,似乎相当普遍。
    • 我知道,我已经尝试添加延迟,但在正确计算时仍然存在同样的问题。有没有一种方法可以让函数仅在(例如)X = false 时运行,然后在函数运行时 X = true 以便函数在完成之前无法再次运行,X 将返回 false?
    • 是的,这基本上就是延迟所做的。困难的部分是您希望完成所有动画,您可以将 x = false 放在最长的事件回调中。我在上面写了你的意思。我不确定这是否可行,问题是可能仍然会出现冒泡。
    猜你喜欢
    • 2012-05-18
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2019-07-03
    • 2019-08-13
    • 2011-12-09
    相关资源
    最近更新 更多