suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – js bricht die Ereignisbindung ab

Ich habe addEvent verwendet, um Klickereignisse mehrmals an ein Element zu binden. Gibt es eine Möglichkeit, alle gebundenen Ereignisse auf einmal abzubrechen?

黄舟黄舟2825 Tage vor661

Antworte allen(3)Ich werde antworten

  • 为情所困

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

    removeevent

    Antwort
    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. 如果把绑定时传递的处理函数作为第二个参数,则只针对该函数移除。

    ==========================================================
    暂时就只想到这个方法啦,希望对你有帮助!

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

    }

    Antwort
    0
  • StornierenAntwort