On Oct 22, 9:48 am, Keith Hughitt <[EMAIL PROTECTED]> wrote: > Could anyone help tell me what I'm missing? > > I could have sworn Prototype already had something like this (a > function that fires only once and then removes itself), but I couldn't > find it anywhere so I went about writing the code myself. > > First I tried to do it by intuition using several variations of: > > Event.observe(myNode, 'click', function(e) { > /** do stuff **/ > Event.stopObserving(this); > > }); > > After reading up a little more about "stopObserving" in the API, I > gave it another stab: > > var handler = function(e) { > /** do stuff **/ > Event.stopObserving(myNode, 'click', > handler.bindAsEventListener(this)); > > }; > > Event.observe(myNode, 'click', moveOnce.bindAsEventListener(this)); > > But the event-handler is still called after the first click. > > Any suggestions?
Something like this should do it: Element.addMethods({ observeOnce: (Event.observeOnce = function(element, eventName, handler) { return Event.observe(element, eventName, function(e) { Event.stopObserving(element, eventName, arguments.callee); handler.call(element, e); }); }) }); > > Thanks, > Keith -- kangax --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---