[JS] removeEventListener met anonymous function

Pagina: 1
Acties:

  • Mei
  • Registratie: Juni 2005
  • Laatst online: 17-10-2024
Ik heb deze code om een event toe te kennen. De anonymous function is om een variabele door te kunnen geven:
code:
1
EventUtil.addEventHandler(document.body,'mousemove',function(nodeID){handleMouseMove(nodeID)});


Dit werkt gewoon. Als ik echte de event wil verwijderen met de volgende code, dan werkt het niet:
code:
1
EventUtil.removeEventHandler(document.body,'mousemove',handleMouseMove);


Van wat ik heb kunnen vinden werkt dit niet, omdat ik een anonymous function aan de eventhandler toegekend heb (EventUtil.addEventHandler is een method die een browsercheck uitvoert en aan de hand van het resultaat op de werkende manier een eventlistener toekent).

Iemand enig idee hoe ik dit kan verwijderen? Heb zelf niks kunnen vinden tot nu toe.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

removeEventHandler verwacht dezelfde argumenten als die je voor addEventHandler hebt opgegeven, dus met puur anonymous functions is het niet mogelijk deze achteraf weer te verwijderen. Je zal dus een referentie naar je functie ergens moeten opslaan om die later weer te kunnen gebruiken voor het verwijderen van de handler - of YUI daar verder goed mee omgaat is nog een tweede want er zitten nog wel wat bugjes in hun event library :P

Intentionally left blank


  • Mei
  • Registratie: Juni 2005
  • Laatst online: 17-10-2024
Hoe bedoel je dat precies? Een referentie naar een functie opslaan? Ik ben nogal beperkt volgens mij, aangezien aan die eventhandler die variabele meegegeven moet worden.

Crap dit, moet morgen af zijn en elke keer kom ik weer dingen tegen die niet werken...

//edit: Hmm, op deze manier de variabele werkt niet. Dan wordt weer andere eventzooi niet goed afgevangen. Zijn er nog andere manieren om die nodeID door te geven aan handleMouseMove? Hmm, zou het misschien in een global kunnen opslaan. De functie wordt nooit tegelijk uitgevoerd...

[ Voor 35% gewijzigd door Mei op 12-06-2007 21:52 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

JavaScript:
1
2
3
4
5
6
7
8
9
10
foo = function()
{
    handleMouseMove(nodeID);
}

EventUtil.addEventHandler(document.body, 'mousemove', foo);

//...

EventUtil.removeEventHandler(document.body, 'mousemove', foo);

en dan foo als global of als een of andere object-property instantieren.

Intentionally left blank