给一个元素使用addEvent多次绑定了点击事件,有什么办法可以一下取消所有绑定的事件吗
人生最曼妙的风景,竟是内心的淡定与从容!
删除事件
不可以,只能一个一个的移除绑定,DOM2级的是removeEventListener,IE中的是attachEvent。匿名函数是不可以被解绑的,所以只能解除具名函数。
removeEventListener
attachEvent
在JQuery中有一种方法可以一下移除所有事件处理函数:
JQuery
<input type="button" id="btn" value="Click Me!" name=""> <input type="button" value="删除所有事件" id="delAll" name=""> <p id="test"> </p> $(function(){ $("#btn").bind("click",function(){ $("#test").append("<p>我的绑定函数1</p>"); }).bind("click",function(){ $("#test").append("<p>我的绑定函数2</p>"); }).bind("click",function(){ $("#test").append("<p>我的绑定函数3</p>"); }); $("#delAll").bind("click",function(){ $("#btn").unbind("click"); }) })
在JQ中,unbind可以用于解除所有的绑定:
unbind
如果没有参数,删除所有绑定的事件。
如果提供了事件类型,那么只删除该类型的绑定事件。
如果把绑定时传递的处理函数作为第二个参数,则只针对该函数移除。
==========================================================暂时就只想到这个方法啦,希望对你有帮助!
element.addEventListener("mouseover", myFunction); 绑定事件
element.removeEventListener("mousemove", myFunction); 移除绑定事件
跨浏览器兼容解决方案
var x = document.getElementById("myBtn");if (x.addEventListener) { // 所有主流浏览器,除了 IE 8 及更早版本
x.addEventListener("click", myFunction);
} else if (x.attachEvent) { // IE 8 及更早版本
x.attachEvent("onclick", myFunction);
}
删除事件
不可以,只能一个一个的移除绑定,DOM2级的是
removeEventListener
,IE中的是attachEvent
。匿名函数是不可以被解绑的,所以只能解除具名函数。
在
JQuery
中有一种方法可以一下移除所有事件处理函数:在JQ中,
unbind
可以用于解除所有的绑定:如果没有参数,删除所有绑定的事件。
如果提供了事件类型,那么只删除该类型的绑定事件。
如果把绑定时传递的处理函数作为第二个参数,则只针对该函数移除。
==========================================================
暂时就只想到这个方法啦,希望对你有帮助!
element.addEventListener("mouseover", myFunction); 绑定事件
element.removeEventListener("mousemove", myFunction); 移除绑定事件
跨浏览器兼容解决方案
var x = document.getElementById("myBtn");
if (x.addEventListener) { // 所有主流浏览器,除了 IE 8 及更早版本
} else if (x.attachEvent) { // IE 8 及更早版本
}