給一個元素使用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 及更早版本
}