javascript - js取消事件綁定
黄舟
黄舟 2017-05-19 10:42:35
0
3
632

給一個元素使用addEvent多次綁定了點擊事件,有什麼辦法可以一下取消所有綁定的事件嗎

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(3)
为情所困

刪除事件

左手右手慢动作

不可以,只能一個一個的移除綁定,DOM2級的是removeEventListener,IE中的是attachEvent
匿名函數是不可以被解綁的,所以只能解除具名函數。

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可以用來解除所有的綁定:

  1. 如果沒有參數,刪除所有綁定的事件。

  2. 如果提供了事件類型,那麼只刪除該類型的綁定事件。

  3. 如果把綁定時傳遞的處理函數作為第二個參數,則只針對該函數移除。

================================================= =========
暫時只想到這個方法啦,希望對你有幫助!

世界只因有你

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);

}

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板