events - 停止空格键滚动页面

标签 events jquery 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
    }
});

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

最佳答案

空格键在 keydown 上滚动页面,而不是在 keyup 上滚动页面,所以请尝试:

$("html").on("keydown", function (e) {
   // etc

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

此外,jQuery 规范了 event.which,因此您无需测试 event.keyCode

关于events - 停止空格键滚动页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514111/

相关文章:

jquery - 防止 jQuery 更改事件无限递归

asp.net-mvc - 如何防止剑道调度程序关闭窗口

javascript - 如何防止用户输入显示在移动浏览器的输入字段上

互联网连接状态更改的 Android 事件

javascript - jQuery Validate + AJAX 用户名可用性检查 : How to marry them?

javascript - 无法使用 JQuery 表单插件进行简单验证来提交表单

javascript - Marker Popup jQuery 事件在重新打开 Popup 后不再触发

events - 所选项目的 ListView 事件已更改

java - 将 "On Change"监听器放在 jFormattedTextField 上

ios - 为什么只为许多单独的触摸创建一个 UIEvent?