Path: csiph.com!aioe.org!news.mb-net.net!open-news-network.org!.POSTED.38.237.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: comp.lang.javascript Subject: Re: removeeventlistener Date: Sat, 28 Oct 2017 20:00:26 +0200 Organization: PointedEars Software (PES) Lines: 64 Message-ID: <19619642.EfDdHjke4D@PointedEars.de> References: <2412105.mvXUDI8C0e@PointedEars.de> <1746259.PYKUYFuaPT@PointedEars.de> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit Injection-Info: gwaiyur.mb-net.net; posting-host="38.237.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch:178.197.237.38"; logging-data="8638"; mail-complaints-to="abuse@open-news-network.org" User-Agent: KNode/4.14.2 X-Face: %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&. var elementOvers = []; > > function setOver (elements) > { > /* > * NOTE: > * You may want to use ES 5 [].forEach.apply(elements, …) or > * ES 6 “for … of” on [].slice.call(elements) instead. > * > * In loops, cache the value of the “length” property unless you > * expect its value to change and want to handle that. > */ > for (var i = 0, len = elements.length; i < len; ++i) > { > /* NOTE: > * You can still return the function reference instead. > * Just keep in mind that in the way it is used here, > * there is a closure over “i”. > * > * Consider using CSS “:hover” selectors based on class selectors > * instead of setting style properties here. > */ > var elementOver = elementOvers[i] = function () { > this.style... > }; Supplemental: If all listeners for the same event implement the same algorithm, you only need to define *one* such function such that it can be shared across function execution contexts – var elementOver = function () { // … }; –, and re-use the reference to it: function (…) { for (…) { elements[i].addEventListener("mouseover", elementOver, false); } } … function (…) { for (…) { elements[i].removeEventListener("mouseover", elementOver); } } That would be much more efficient then. -- PointedEars FAQ: | | Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.