如何在使用jquery.preventdefault后启用事件?

如何在使用jquery.preventdefault后启用事件?,jquery,horizontal-scrolling,keydown,preventdefault,Jquery,Horizontal Scrolling,Keydown,Preventdefault,使用jquery.preventdefault后如何启用事件 我有这个代码来防止文档在下面的键代码上左右滚动 $('body').keydown(function(e){ if (e.keyCode === 39 || e.keyCode === 37) { e.preventDefault(); // return false; } }); 然后我有一个按钮来启用上面的键码,让页面再次滚动 $('#pbCloseBtn').click(

使用jquery.preventdefault后如何启用事件

我有这个代码来防止文档在下面的键代码上左右滚动

$('body').keydown(function(e){
    if (e.keyCode === 39 || e.keyCode === 37) {
        e.preventDefault();
       // return false;
    }
});
然后我有一个按钮来启用上面的键码,让页面再次滚动

     $('#pbCloseBtn').click(function(){
        $('body').keydown(function(e){
            if (e.keyCode === 39 || e.keyCode === 37) {
               e.bind('scroll');
               return true;
            }
        });
    });
但在阻止页面滚动后,它将不起作用

有什么想法吗?

您可以在和上使用:


您只需解除现有处理程序的绑定

$('#pbCloseBtn').click(function(){
    $('body').unbind('keydown'); // <-- removes previous handler
});
$('#pbCloseBtn')。单击(函数(){

$('body').unbind('keydown');//您可以在开始时从两个键解除功能绑定,然后在
#pbCloseBtn
函数上像当前一样重新绑定。
e.bind('scroll'))
gives
Uncaught TypeError:Object#没有方法“bind”
,因为您在事件对象上调用它,但在任何情况下
。bind()不会创建事件或导致事件开始发生,它会将处理程序绑定到现有事件。从unbind的文档中可以看出:“从jQuery 1.7开始,.on()和.off()方法优先用于附加和删除元素上的事件处理程序”。请参阅我的答案。否,调用
.e.bind('scroll')
会产生错误
未捕获类型错误:对象没有方法“bind”
.unbind()
(或
.off()
)零件本身就足够了。@nnnnnn:你是对的。没有看到该函数在做什么。修复了it@dystroy:不确定他使用的是哪个jquery版本,试图遵循现有逻辑。
$('#pbCloseBtn').click(function(){
    $('body').unbind('keydown'); // <-- removes previous handler
});