js 如何移除一个匿名函数的绑定事件

大家都知道 addEventListener的用法 绑定事件

例如

element.addEventListener(type,handler,false);

element是dom元素 type是事件比如click handler 是一个函数表达式,false 代表是冒泡阶段 true是捕获阶段

如果移除事件的话 这样写:

element.removeEventListener(type,handler);

如果handler是个匿名函数呢

比如

element.addEventListener(type,function(){

},false);

这样是不是就没有办法移除了呢

当然可以的

可以把条件设置在匿名函数里面进行

代码如下:测试成功

var dom=document.getElementById("content"),clickt=0;
dom.addEventListener("click",function(e){
clickt++;
alert(‘你摸了我‘+clickt+‘下了。最多摸2下哦‘);
if(clickt>=2){
dom.removeEventListener(e.type,arguments.callee,false);
console.log(this);
}
});
时间: 2024-12-17 16:44:58

js 如何移除一个匿名函数的绑定事件的相关文章

JS常用的三种匿名函数

第一种: var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量 alert(f1(1,3)); 匿名函数没法调用,只能赋值给一个变量,由于是赋值语句,后面要加分号 应用: ///document.getElementById(‘btn’).onclick=function(){} 第二种(*): (function(p1,p2){alert(p1+p2);})(20,30); 直接声明一个匿名函数,立即使用.用匿名函数省得定义一个用一次就不用的

关于js中立即执行的匿名函数写法

1 /*最流行的写法*/ 2 (function() { 3 alert("run!") 4 })(); 5 6 /* !号可以有1~正无穷个,所以这一种就可以衍生无数种方式 */ 7 !!!(function() { 8 alert("run!") 9 })(); 10 11 (function() { 12 alert("run!") 13 }).call(); 14 15 (function() { 16 alert("run!&

让任意线程执行一个匿名函数

本类主要功能是在当前线程(比如说主线程),指派任意一个线程(比如说某个工作线程)去执行一个匿名函数. 注意,这个和QtConcurrent配合QThreadPool不一样,QtConcurrent配合QThreadPool只能指派回调到QThreadPool中的线程. 而这个类可以指派一个回调到任意线程. 两个主要接口 JasonQt_InvokeFromThread::invoke:非阻塞,只是将回调放到队列中,等待执行 JasonQt_InvokeFromThread::waitForInv

【JS 设计模式 】门面模式之DOM元素绑定事件

门面模式的作用:一是简化类的接口,通过用一个接口(函数或方法)来封装复杂的逻辑代码从而客户端可以使用一个接口来调用它:二是消除类与使用它的客户代码之间的耦合,使客户代码和复杂的逻辑代码分离,也就是耦合: ?在何种情况下会使用:1)为一个复杂子系统提供一个简单接口.2)提高子系统的独立性.3)在层次化结构中,使用Facade模式定义系统中每一层的入口,使它们各尽其责. 用绑定事件来举例门面模式,IE浏览器和其它(火狐.谷歌)浏览器在对html元素绑定事件上是有区别的. ie绑定代码: var bu

函数必须绑定事件才可以

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <title>练习</title> 7 <style type="text/css"

记录一个关于 Document.on绑定事件后,导致页面卡顿的情况

假设当前页面的js文件中有如下函数: function A(){ function B(); } function B(){ $(document).on("click","#元素id",function(){ dosomething……; }); } 函数A是一个按钮上绑定的onclick函数处理: 那么每次点击按钮触发A函数之后,都会导致B函数的执行,进而 $("#元素id") 这个元素就会绑定一次点击事件. 如果多次触发A函数之后,导致 $

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

js匿名函数

一. 匿名函数的声明和使用1.声明一个匿名函数,直接赋值给某一个事件:2.使用匿名函数表达式.将匿名函数,赋值给一个变量.声明:var func=function(){  }调用:func(); 注意:使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后!!!(与普通函数的区别)[js代码的执行顺序问题]js代码在运行时,会分为两大部分.检查装载和执行阶段.检查装载阶段:会先检测代码的语法错误,进行变量.函数的声明执行阶段:变量的赋值.函数的调用等,都属于执行阶段.以下代码为例: 原因

js之匿名函数

js之匿名函数   这篇博文内容来自于javascript高级程序设计第2版,向作者致敬 函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数