i made it even more simply...  sry, took forever for the post to
actually post...

 $t("#event_" + i).dblclick(function () {eventDoubleClick(this)}); }

just send the object....


On Aug 3, 4:03 pm, "Michael Geary" <[EMAIL PROTECTED]> wrote:
> > From: Terry B
>
> > I have a bunch of events and I loop through them.  I would
> > like to create a double-click effect so that I call function
> > "eventDoubleClick" but I want that event to pass its index value, as
> > such:
>
> > for (i=0, i<arrayLength; i++)
> > {
> >     $t("#event_" + i).dblclick(function () {eventDoubleClick(i)}); }
>
> > Basically all the above does is then setup so that all the
> > event dblclicks are calling eventDoubleClick(i) which uses
> > the last i value; instead of setting them up as
> > eventDoubleClick(1), eventDoubleClick(2), .... eventDoubleClick(n)
>
> As is so often the case, what you want is a closure. Get that "i" variable
> to be a local variable in a function called inside the loop. Here is one way
> you could code it:
>
>    for(i=0, i<arrayLength; i++) {
>       (function( i ) {
>          $t( "#event_" + i ).dblclick( function () { eventDoubleClick(i);});
>
>       })( i );
>    }
>
> If that seems too obscure, this does the same thing in a more spelled-out
> way:
>
>    function addclick( i ) {
>       $t( "#event_" + i ).dblclick( function () { eventDoubleClick(i); });
>    }
>
>    for(i=0, i<arrayLength; i++) {
>       addclick( i );
>    }
>
> Either way, each time you call the function inside the loop, it creates a
> new closure that has its own copy of the "i" variable.
>
> -Mike

Reply via email to