如何在.keypress()中的两个函数之间切换;?

时间:2011-11-17 00:28:40

标签: javascript keypress slide jquery

以下是我的网站:http://mttdn.com/dev/

如果单击右上角的灯光开关按钮,您将看到隐藏的div从右侧滑入。再次单击该按钮,它会向后滑动。我希望能够在按下“P”键时进行相同的操作。我可以设置.keypress();,如果你单击'P',你可以看到,但是,你也会看到,使用我为.click();所做的相同代码,div滑入,然后立即滑出。我试图弄清楚如何使用.toggle();与.keypress();所以这不会发生。

这是我的代码:

$(document).ready(function(){
    var previewopen = $(".codepreview");

    $(document).keypress(function(event){
        if (event.which == 112){
            previewopen.animate({left:"-=50%",},'normal');
            previewopen.animate({left:"+=50%",},'normal');
        }
    });
});

我只是希望能够点击“P”,让div滑出并停止,然后再次点击“P”让它向后滑动。完成此任务的最佳方法是什么?任何帮助是极大的赞赏!谢谢!

2 个答案:

答案 0 :(得分:2)

点击事件似乎工作正常。为什么不在按键上触发它? 这样的事情:

$(document).ready(function(){
    $(document).keypress(function(event){
        if (event.which == 112){
            $('.lightswitch').trigger('click');
        }
    });
});

答案 1 :(得分:2)

只需使用布尔开关:

(function() {
    var on = false;

    $(document).keypress(function(event) {
        if (event.which == 112) {
            previewopen.animate({left: on ? '-=50%' : '+=50%'}, 'normal');
            on = !on;
        }
    });
})();

我删除了对象文字中的尾随,,这会导致某些浏览器出现问题(我会让你猜猜哪个...),并且我使用了匿名函数来保持{ {1}}本地。