如何在使用jquery.preventdefault后启用事件?
使用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(
$('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'))
givesUncaught 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
});