搜尋

首頁  >  問答  >  主體

javascript - js取消事件綁定

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

黄舟黄舟2825 天前664

全部回覆(3)我來回復

  • 为情所困

    为情所困2017-05-19 10:44:35

    刪除事件

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-19 10:44:35

    不可以,只能一個一個的移除綁定,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. 如果把綁定時傳遞的處理函數作為第二個參數,則只針對該函數移除。

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

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-19 10:44:35

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

    }

    回覆
    0
  • 取消回覆