【问题标题】:How to set one keyboard event at a time?如何一次设置一个键盘事件?
【发布时间】:2012-05-10 18:52:09
【问题描述】:

我这里有这个功能

$(document).keydown(function(e){
        if (e.which == 39) {
            goRight();
        }
        if (e.which == 37) {
            goLeft();
        };
    });

我想要这样:如果我按下右或左箭头键,调用我的任何功能(goRight 或 goLeft),我只能在该功能完成后执行其他按键操作。我想要的类似于动画的 stop() 函数。因为当我快速按左/右时,我的所有边距都会被窃听。

goRight 函数是这样的

function goRight(){
                if(!$('.livin').hasClass('blog') ){
            $('#contentGeral .containerConteudo ul').stop().animate({marginLeft:'-=800'},function(){
                    removeClasses();
                    addClasses();
                });
            }
            else{
                $('#contentGeral .containerConteudo ul').stop().animate({marginLeft:'0'}, function(){
                    removeClasses();
                    addClasses();
                    });
            }
    }

goLeft 是类似的。

提前感谢您的帮助!

【问题讨论】:

  • 你有没有在函数中尝试.stop(true,true)
  • 在动画函数中或者像“e.stop(true,true).which”甚至像这样的“stop(true,true).goLeft();” ?
  • 没关系,动画中的 stop(true,true) 成功了!谢谢!

标签: jquery input keyboard


【解决方案1】:

尝试在其上放置一个启用布尔值?它看起来像这样:

var enable = 1;
$(document).keydown(function(e){
    if (e.which == 39) {
        if(enable == 1){
            enable = 0;
            goRight();
            enable = 1;
        }
    }
    if (e.which == 37) {
        if(enable == 1){
            enable = 0;
            goLeft();
            enable = 1;
        }
    };
});

不过,这只是在黑暗中拍摄。我不确定您的问题是什么,希望对您有所帮助!

【讨论】:

  • 不幸的是它没有工作,这个想法很好但它认为它没有工作,因为在函数调用之后放置布尔值并不能保证在函数之后将启用变量设置为 1已完全执行,这就是我所需要的。我需要一个类似的解决方案,但只在执行“goRight”后调用 enable = 1 我什至尝试将“enable = 1”放在 goRight 和 goLeft 的底部,但如果我按左/右,它就不起作用很快,就会出现左右边距之间的平均值之类的东西
【解决方案2】:

.stop(true,true) 方法完成了这项工作。感谢 3nigma 的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 2019-05-23
    • 2015-03-07
    • 2013-05-15
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多