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 に答える