当我使用锚时,为什么我的按键处理程序不起作用

时间:2013-05-15 19:56:09

标签: javascript jquery keypress

我在我的主页上使用jQuery,并在加载窗口时添加一个keylistener。它看起来像这样:

$(window).load(function(){
    var debug = $('#debug'); // this is a fixed div I use to print debug
                             // information to the screen
    $(window).keypress(function(event) {
        var keyCode = event.keyCode ? event.keyCode : event.which;
        debug.text(keyCode);
        if (keyCode == 106 || keyCode == 40)
            nextCard();
        else if (keyCode == 38 || keyCode == 107)
            prevCard();
    });
});

您可以使用向上箭头和向下箭头键或“j”和“k”从一张卡片跳到另一张卡片。只要加载页面而不跳转到锚点,它就可以正常工作。这意味着当我转到http://www.blah.com这样的页面时,它可以正常工作,但是当我加载它http://www.blah.com#anchor时,它就不再起作用了。

更新: $(窗口).load()被触发,所以这不是问题。

你有什么想法可能是什么问题?谢谢!

2 个答案:

答案 0 :(得分:0)

如果您找不到简单的解决方案,那么每次哈希更改时都可以尝试重新绑定您的函数。例如,使用此插件http://benalman.com/projects/jquery-hashchange-plugin/

答案 1 :(得分:0)

我发现了问题。它实际上与按键处理程序无关。这是一个处理程序,当有人进入带有URL中的哈希的页面时,它会启动滚动动画。

尽管如此,感谢让我思考一下我的代码:P下次我在这里发帖之前尝试考虑这些错误......