zoukankan      html  css  js  c++  java
  • javascript中的removeEventListener失效问题

    一般现在我们用js绑定事件是 addEventListener(event,function,bool)

    event:事件的名称 字符串 如:'click',

    function: 事件处理的方法:

    bool: 事件的处理方式; false 冒泡,true 捕获

    这里就不过得的说明 addEventListener 这个方法了

    下面是主题  removeEventListener (event,function,bool) 参数和 addEventListener 的参数一样,不多做解释

    下面我遇到的具体问题

    我在 很多a标签循环绑定事件的时候,发现 removeEventListener  失效了

    具体写法如下:

    绑定事件:

    var list = document.getElementsByTagName('a');
        for (var i = list.length - 1; i >= 0; i--) {
            list[i].addEventListener('click',function(e){
                console.log('addEventListener');
                return false;
            },false);
        };

    取消事件:

    for (var i = list.length - 1; i >= 0; i--) {
            list[i].removeEventListener('click',function(){
                console.log('removeEventListener');
            },false);
        };

    发现取消事件不管用了,找了好久有人说 function需要和绑定的方法是一个,这样才能取消

    最后解决为:

    function addAndRemove(){
       console.log('add');
       console.log('remove');  
    }
    
    for (var i = list.length - 1; i >= 0; i--) {
            list[i].addEventListener('click',addAndRemove,false);
    };
    
    for (var i = list.length - 1; i >= 0; i--) {
            list[i].removeEventListener('click',addAndRemove,false);
    };

    最后只是知道了绑定和取消需要用同一个函数,但是不知道为什么,希望有大牛给解释一下!!!!

  • 相关阅读:
    C#.net开发 List与DataTable相互转换
    asp.net 7.分页
    PostgreSQL 创建触发器 Trigger
    PostgreSQL 的命令行工具 psql 的常用命令
    安装SQL Server DQS 和 MDS
    Ubuntu ssh-keygen 生成公钥并添加到远程服务器上
    阿里云code基础文档
    忘记本地MySQL数据库密码的解决方法
    谷歌浏览器安装jsonview
    phpstorm汉化包
  • 原文地址:https://www.cnblogs.com/tongchuanxing/p/js.html
Copyright © 2011-2022 走看看