gpt4 book ai didi

javascript - 删除所有按下的按键事件

转载 作者:行者123 更新时间:2023-11-30 11:59:43 24 4
gpt4 key购买 nike

所以我有一个插件(有点像 lightbox/tour/gallery),它通过点击一个按钮来运行,当按钮被点击时,用户可以使用键盘键(左和对上一个/下一个)但是当插件结束(最后一个图像)并且当用户单击按钮并且插件再次运行时用户继续按下右箭头键将触发之前注册的按键。

有没有一种方法可以清除所有已注册的按键,就像清理 chache 一样?

//按键部分

  $('body').on('keydown', function(e){

/**
* Space key.
**/
if(e.keyCode == 32){

//run code

}

/**
* Arrow left key.
**/
if(e.keyCode == 37){

//run code

}

/**
* Arrow right key.
**/
if(e.keyCode == 39){

//run code

}

});

最佳答案

如您正确使用 on()要附加事件处理程序,您可以使用 off() 分离它。如果您不向它传递函数,它将删除该事件的所有事件处理程序:

$("body").off( "keydown" );

当您在 <body> 上执行此操作时不过,这有点笨手笨脚,因为您最终可能会删除不属于您的插件的其他按键处理程序。更好的选择是将特定函数传递给 off()所以你只删除那个处理程序。你可以像这样构造它:

// IIFE to encapsulate plugin variables
(function() {

function keyDownHandler(e) {
if(e.keyCode == 39) {
// code...
}
}

// attach the handler
body.on('keydown', keyDownHandler);

// some function to handle moving through the carousel
function showImage() {
if(endOfCarousel) {
// remove the handler
body.off('keydown', keyDownHandler);
}
}

})();

顺便说一下unbind()其他答案中提到的用于 bind() 附带的事件, 并且不太受欢迎。

关于javascript - 删除所有按下的按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36954441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com