Changing event callbacks would be a critical change. jQuery UI uses trigger with an additional argument everywhere.
Jörn On Tue, Jul 21, 2009 at 6:37 AM, John Resig<jere...@gmail.com> wrote: > A quick example: > > $(".msg").each(function(i, $this){ > $(".hide", this).click(function(){ > $this.hide(); > }); > }); > > I actually proposed this set of changes to Yehuda on IM and then had a back > and forth as to how to best implement them. I think they actually hold some > promise. I like this since it's relatively pain-free which helping to reduce > extra syntax (when dealing with closures in jQuery it's common that you'll > need to declare references to the wrapped jQuery set - something that this > avoids). > > The proposal is a set of 3 changes - each change is making the second > argument of a callback function equal to $(this). > > - Modifying existing callbacks that have no second argument (like .filter, > as Yehuda mentioned). > - Modifying event callbacks to have a second argument be $(this) (which, > can conflict with .trigger(event, data)). > - Modifying each callbacks to have a second argument be $(this) (replacing > the existing second argument of this). > > Obviously changing the second incoming argument to .each(function(i,$this)) > is going to require a little bit of finesse. I did a quick search on Google > Codesearch but didn't see any immediate warning signs: > http://www.google.com/codesearch?hl=en&lr=&q=\.each\%28\s*function\%28\s*\w%2B%2C\s*\w%2B\s*\%29+lang%3Ajavascript&sbtn=Search > > If we make a change like this I would like it to be an all-or-nothing > proposition (having a half-baked API modification landing seems kind of > lame) BUT it must be done in a way that we're sure won't break important > code. (At the very least, a change like this would have to be done in a > major 1.x release.) > > A quick note: It's probably important to use function(i, $this) in the > examples (to help differentiate it from a "normal" self [which generally > equates to var self = this;]). > > --John > > > On Mon, Jul 20, 2009 at 11:14 PM, Yehuda Katz <wyc...@gmail.com> wrote: >> >> At the moment, traversal callbacks, like the ones passed to >> find/filter/etc. take a single "index" parameter. I'd like to propose that >> they are unified with .each as follows: >> $("div").filter(function(i, self) { >> // stuff >> }); >> As a separate concern, I'd like to discuss changing the second parameter >> in both to be a jQuery object. Obviously, it would need to be done via slow >> deprecation for .each, but I don't think it'd break all that much code: >> $("div").filter(function(i, self) { >> // self == $(this) >> }) >> Thoughts? >> >> -- >> Yehuda Katz >> Developer | Engine Yard >> (ph) 718.877.1325 >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---