On 2/27/06, Martin Bialasinski <[EMAIL PROTECTED]> wrote:
> I would like to share a modification to bindAsEventListener() that
> might be useful to some of you. It makes it possible to do
>
> function show(event, number) {
>   alert(Event.element(event).id + " = " + number);
> }
>
> Event.observe("el1", "click", show.bindAsEventListener(this, 5);
> Event.observe("el2", "click", show.bindAsEventListener(this, 10);
>
> That will alert "el1 = 5" when el1 is clicked and "el1 = 10" when el2
> is clicked.
>
> The changed function:
>
> Function.prototype.bindAsEventListener = function(object) {
>   var __method = this;
>   var argumente = $A(arguments);
>   argumente.shift(); // remove "object" from the list => just the
> additional arguments remain
>   return function(event) {
>     var ar = argumente.slice(0); // copy values
>     ar.unshift(event || window.event);
>     return __method.apply(object, ar);
>   }
> }

The plain old Function.prototype.bind() provides this exact
functionality.  If you want to put that into bindAsEventListener, I'd
recommend using the same variable names/techniques rather than
reinventing them.

Todd
_______________________________________________
Rails-spinoffs mailing list
Rails-spinoffs@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs

Reply via email to