84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
给一个元素使用addEvent多次绑定了点击事件,有什么办法可以一下取消所有绑定的事件吗
人生最曼妙的风景,竟是内心的淡定与从容!
removeevent
不可以,只能一个一个的移除绑定,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);
}
removeevent
不可以,只能一个一个的移除绑定,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 及更早版本
}