移除匿名函数的事件监听

2,266 阅读1分钟

给元素添加事件监听时使用 obj.addEventListener("click",函数名)

移除元素事件监听时使用 obj.removeEventListener("click",函数名)

如果使用的是匿名函数该怎么移除呢? obj.addEventListener("click",function(){})

js代码:

    <div class="box" style="width: 100px;height: 100px;background-color: aqua;"></div>
   <script>
        var box = document.querySelector(".box")
        var n = 0;
        box.addEventListener("click", function () {
            n++;
            alert("n = "+n+",最多为5;");
            if (n >= 5) {
                box.removeEventListener("click", arguments.callee);
            }
        });
    </script>

解决方法:将移除事件写在添加事件当中,满足触发条件之后移除事件。arguments.callee可以指向正在运行的函数而且不需要函数名,所以可以指向匿名函数,并将匿名函数移除,达到移除事件监听的效果。