8

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(私が含めたハンドラーと何か関係がありますか?

4

1 に答える 1

21

keydownスペースバーはではなく でページをスクロールするkeyupので、試してください:

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

要素はコードの実行時に存在する.live()ため、実際に使用する必要はありません。html

また、jQueryは正規event.which化するため、テストする必要はありませんevent.keyCode

于 2012-07-16T23:40:46.543 に答える