从滚动页面停止空格键

sir*_*day 7 jquery events preventdefault

我知道e.preventDefault();应该阻止空格键在页面上滚动,但它不能用于我的功能

$("html").live("keyup", function (e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    if ((code == 32 || code == 13) && $("span").is(":focus")) {
        openDropdown();
        $(".dropdown a.PivotItem:first").focus();
        e.preventDefault();
    } else if ((code == 32 || code == 13) && $("a.PivotItem").is(":focus")) {
        closeDropdown();
        changeSelected($("*:focus"));
        e.preventDefault();
    } else if (code == 27 && ($("span").is(":focus") || $(".dropdown a.PivotItem").is(":focus"))) {
        closeDropdown();
        $("span").focus();
    } else {
        //do nothing
    }
});
Run Code Online (Sandbox Code Playgroud)

它与.live(我所包含的处理程序有什么关系吗?

nnn*_*nnn 19

空格键滚动页面keydown,而不是打开keyup,所以尝试:

$("html").on("keydown", function (e) {
   // etc
Run Code Online (Sandbox Code Playgroud)

您实际上并不需要使用.live(),因为html元素将在您的代码运行时存在.

此外,jQuery正常化,event.which因此您无需进行测试event.keyCode.

  • 所以我的代码不起作用,因为我阻止了 keyup 上空格键的默认事件,这恰好是什么。奇怪,谢谢! (2认同)