Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
701 views
in Technique[技术] by (71.8m points)

javascript - Add an event listener with sevral parameters and remove it later

This seems to be a very popular question though i didn't seem to find any pertinat answers.

I attach an event listen like :

window.addEventListener('scroll', fnName, false);

The problem is that fnName expect several parameters, so i then triedl

window.addEventListener('scroll', (function( e ){
   return fnName(e, some, param )
}()), false)

but then window.removeEventListener do not work anymore so i tried:

window.removeEventListener('scroll', (function( e ){
   return fnName(e, some, param )
}()), false)
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Every time you declare an anonymous function, it creates a new function instance. If you want to remove an existing function, you need to retain a copy of the function instance.

var temp = function () {
    fnName(e, some, param);
};
window.addEventListener('scroll', temp, false);
//elsewhere,
window.removeEventListener('scroll', temp, false);

I should also note that using

(function (e){
     return fnName(e, some, param)
}());

calls fnName immediately with undefined as the first parameter. I doubt that's your intention.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...