84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
給一個元素使用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 及更早版本
}