前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不使用jquery只执行一次事件侦听器函数

不使用jquery只执行一次事件侦听器函数

作者头像
很酷的站长
发布2023-12-05 16:20:52
1540
发布2023-12-05 16:20:52
举报
不使用jquery只执行一次事件侦听器函数
不使用jquery只执行一次事件侦听器函数

我制作了一段代码,用箭头上下垂直移动6个项目前面的元素.当按下enter时,我将加载一组带有该项目的图像.代码工作正常,但在输入命中后,这段代码需要停止,所以我可以用箭头键做其他事情并输入.现在它只是在输入被击中后继续前进.我尝试使用var检查,但是我似乎无法从交换机内部更改变量.有人知道如何使这项工作?

代码语言:javascript
复制
var enterPushed = false;
 
if(!enterPushed){  
        document.addEventListener('keydown', function(event){
    if(event.keyCode == 38){
        console.log("up");
        if(margTop > 122){
            margTop = margTop - 60;
            marginTop();
            i = i - 1;
            bliep.play();
        }
    }
    if(event.keyCode == 40){
        console.log("down");
        if(margTop < 422){
            margTop = margTop + 60;
            marginTop();
            i = i + 1;
            bliep.play();  
        }
    }
    if(event.keyCode == 13){
        switch(i){
            case 1:
                enterPushed = true;
                startup(1);        
            break;
            case 2:
                enterPushed = true;
                startup(2);            
            break;
            case 3:
                enterPushed = true;
                startup(3);        
            break;
            case 4:
                enterPushed = true;
                startup(4);        
            break;
            case 5:
                enterPushed = true;
                startup(5);            
            break;
            case 6:
                enterPushed = true;
                startup(6);        
            break;
        }
    }
});
}

Mati Tucci.. 9

现在你可以onceoptions对象中传递一个布尔值,如下所示:document.body.addEventListener('click', _ => console.log('once'), {once: true});

资料来源: https ://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

浏览器兼容性: Chrome 55,Firefox 50,Safari(WebKit).

1> Mati Tucci..:

现在你可以onceoptions对象中传递一个布尔值,如下所示:document.body.addEventListener('click', _ => console.log('once'), {once: true});

资料来源: https ://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

浏览器兼容性: Chrome 55,Firefox 50,Safari(WebKit). 2> Kolby..:

如果要停止所有键事件,只需删除事件侦听器即可.

代码语言:javascript
复制
var enterPushed = false;
 
var handleKeyDown = function(){
    if(event.keyCode == 38){
        console.log("up");
    }
    if(event.keyCode == 40){
        console.log("down");
    }
    if(event.keyCode == 13){
      console.log('enter');
      document.removeEventListener('keydown', handleKeyDown);     
    }
};
 
document.addEventListener('keydown', handleKeyDown);

如果你想停止只听输入或特定键,你可以添加一个标志并检查它和键码.这看起来就像你在这里几乎所做的那样.我完成了逻辑并减少了代码:

代码语言:javascript
复制
if(event.keyCode == 13 && enterPushed){
   enterPushed = true;
   startup(i); 
}

这不是`.removeEventListener()`的工作原理.您需要提供原始功能.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档