2011/3/22 Mark McDonnell <mark.m...@gmail.com>: > I'm having a bizarre issue removing an event listener (this occurs in both > Firefox and Chrome). > > If I run the following code via the console… > > document.getElementsByTagName('body')[0].addEventListener('click', > function(e){ alert(e); }, false); > > …the event listener is added successfully, but if I run the following code > also in the console to remove the event listener it doesn't appear to > actually remove the event listener?... > > document.getElementsByTagName('body')[0].removeEventListener('click', > function(e){ alert(e); }, false); > > …I'm really confused why this wouldn't work?
Those listeners are totally different functions. If you are planning to remove an event listener, make it a separate function, and use that with addEventListener and removeEventListener. For example: function clickHandler(e) { alert(e); } document.getElementsByTagName('body')[0].addEventListener('click', clickHandler, false); // ... document.getElementsByTagName('body')[0].removeEventListener('click', clickHandler, false); Creating anonymous functions each time creates 2 different functions, so you cannot remove it, as u haven't added that, but a different function, that has the same implementation. Just think of: var a = {}, b = {}; alert(a === b); // false -- Poetro -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/jsmentors@jsmentors.com/ To search via a non-Google archive, visit here: http://www.mail-archive.com/jsmentors@googlegroups.com/ To unsubscribe from this group, send email to jsmentors+unsubscr...@googlegroups.com