Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript removeEventListener not working - event listener remains

I've looked at a few ways around this, but I can't really tell, my code is:

lb = document.body;

if(lb.addEventListener){    
    lb.addEventListener('keyup',
    function(event){
        keyPress(event.keyCode)
    }, false);
}

//In another function.

if(document.body.removeEventListener){
    document.body.removeEventListener('keyup', function(event){event.keyCode}, false);
} 

The remove code is not working, haven't tried a great deal of solutions yet but its the last thing on my script and I just want it done.

Thank you all

like image 657
Josh Dredge Avatar asked Feb 05 '26 08:02

Josh Dredge


1 Answers

When calling removeEventListener, you have to give it the same function instance than to addEventListener:

var lb = document.body;

var callback = function(event){
    keyPress(event.keyCode)
};

if(lb.addEventListener){    
    lb.addEventListener('keyup', callback, false);
}

//In another function.

if(document.body.removeEventListener){
    document.body.removeEventListener('keyup', callback, false);
}

jQuery makes it easier to deal with this, thanks to its namespaced events feature:

$(lb).on('keyup.my_namespace', function () { ... })

// later

$(lb).off('keyup.my_namespace');
like image 131
Arnaud Le Blanc Avatar answered Feb 13 '26 07:02

Arnaud Le Blanc



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!