suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Informationen zum Binden und Lösen der Bindung von nativen js-Ereignissen

Laden Sie den Code direkt hoch

ele.addEventListener('click', function(e) {
    console.log(e)
})

Hier muss ich unter bestimmten Umständen das Klickereignis von ele aufheben, aber ich muss beim Binden zusätzliche Parameter wie „Ereignis“ verwenden

Ich weiß, dass „removeEventListener“ ungebunden sein kann, aber die Funktion, die sie übergeben möchten, muss dieselbe benannte externe Funktion sein, was nicht funktioniert, wenn ich Parameter benötige

Ich weiß auch, dass Sie, wenn Sie nur ein Klickereignis binden müssen, ele.click = function() {} und dann ele.click = null verwenden, um die Bindung aufzuheben, oder die von anderen Toolbibliotheken bereitgestellten Methoden verwenden

Aber jetzt möchte ich nur wissen, ob es möglich ist, RemoveEventListener zu verwenden, um es abzubrechen

Danke

巴扎黑巴扎黑2697 Tage vor656

Antworte allen(2)Ich werde antworten

  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:40:23

    这样就行,绑定和解绑的函数只要是指向同一个就ok

    function handler(e){
        //操作
        console.log(e)
    }
    ele.addEventListener('click', handler);//绑定
    ele.removeEventListener('click', handler);//解绑

    Antwort
    0
  • 高洛峰

    高洛峰2017-07-05 10:40:23

    function bindFunc(e) {
        console.log(e);
        //用参数e来进行一些操作,干啥都行
    }
    this.cusBindFunc = bindFunc.bind(this, e); //bind一下,因为remove的时候用的func必须和绑定的时候一样
    ele.addEventListener('click', this.cusBindFunc);//绑定事件
    ele.removeEventListener('click', this.cusBindFunc);//解绑

    另外为了兼容性,可以兼容一下attachEvent, detachEvent

    不知道我是否理解了你的问题@AugustEchoStone

    Antwort
    0
  • StornierenAntwort