我知道 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/