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
-~----------~----~----~----~------~----~------~--~---

Reply via email to