javascript - 如何在执行 event.preventDefault() 后重新启用默认值

标签 javascript jquery event-handling events

我知道有人问过这个问题 here ,但答案对我需要做的没有用,所以我想我会给出一些示例代码并稍微解释一下......

$(document).keypress(
    function (event) {
        // Pressing Up or Right: Advance to next video
        if (event.keyCode == 40 || event.keyCode == 39) {
            event.preventDefault();
            $(".current").next().click();
        }
        // Pressing Down or Left: Back to previous video
        else if (event.keyCode == 38 || event.keyCode == 37) {
            event.preventDefault();
            $(".current").prev().click();
        }
     }
 );

它基本上禁用箭头键以将它们用于其他用途,但这样做:

$(document).keypress(function () { });

不再启用默认功能...我需要它来滚动页面而不必为其创建滚动功能...

有什么想法吗?

谢谢,
马特

最佳答案

添加一个新的处理程序并不会取代以前的处理程序,它会添加一个新的处理程序。您可能正在寻找 jQuery#unbind如果你试图删除以前的处理程序,但如果你要经常打开和关闭它,你可能最好使用一个标志告诉你是否阻止现有处理程序中的默认设置。

添加和稍后删除处理程序如下所示:

function keypressHandler() { /* ... */};

$('#thingy').keypress(keypressHandler);

// ...elsewhere...
$('#thingy').unbind('keypress', keypressHandler);

关于javascript - 如何在执行 event.preventDefault() 后重新启用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608714/

相关文章:

objective-c 触摸事件

javascript - 访问 ng-repeat 的第一个元素

javascript - 媒体源扩展视频崩溃(内存泄漏)

javascript - CSS 定位 : how to make it relative to one element but not the other?

javascript - 使用javascript,以不同的名称保存后删除原始文件?

c# - 当 Bool 变量变为真时更改标签

JavaScript/jQuery 将内容设置为 <div> 回发后不保留

jquery - 我可以允许用户仅使用 JQuery 来保留对 HTML 页面的更改吗?

javascript - 如何解决打开和关闭 div Bootstrap 问题?

javascript - 在 Javascript 事件委托(delegate)中使用循环