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