0

使用 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;
            }
        });
    });

但是阻止页面滚动后它将不起作用。

有任何想法吗?

4

2 回答 2

1

您可以使用 on 和off

var preventScroll = function(e){
    if (e.keyCode === 39 || e.keyCode === 37) {
        e.preventDefault();
       // return false;
    }
};
$('body').on('keydown', preventScroll);
$('#pbCloseBtn').click(function(){
    $('body').off('keydown', preventScroll);
});

示范

于 2013-06-26T20:30:37.650 回答
1

您只需要取消绑定现有的处理程序

$('#pbCloseBtn').click(function(){
    $('body').unbind('keydown'); // <-- removes previous handler
});
于 2013-06-26T20:31:07.270 回答