JavaScript:刪除事件監聽器


Answers

   canvas.addEventListener('click', function(event) {
      click++;
      if(click == 50) {
          this.removeEventListener('click',arguments.callee,false);
      }

應該這樣做。

Question

我試圖刪除偵聽器定義中的事件偵聽器:

canvas.addEventListener('click', function(event) {
    click++;
    if(click == 50) {
        // remove this event listener here!
    }
// More code here ...

我怎麼能這樣做? this = event ...謝謝。




試試這個,它為我工作。

<button id="btn">Click</button>
<script>
 console.log(btn)
 let f;
 btn.addEventListener('click', f=function(event) {
 console.log('Click')
 console.log(f)
 this.removeEventListener('click',f)
 console.log('Event removed')
})  
</script>



如果@ Cyber​​nate的解決方案不起作用,請嘗試將觸發器關閉到它自己的功能中,以便引用它。

clickHandler = function(event){
  if (click++ == 49)
    canvas.removeEventListener('click',clickHandler);
}
canvas.addEventListener('click',clickHandler);



如果有人使用jQuery,他可以這樣做:

var click_count = 0;
$( "canvas" ).bind( "click", function( event ) {
    //do whatever you want
    click_count++;
    if ( click_count == 50 ) {
        //remove the event
        $( this ).unbind( event );
    }
});

希望它可以幫助某人。 請注意,@ user113716給出的答案很好用:)