Plugins use $.each() with third argument, to pass "things".
For example: jquery.treeview.async.js

--DBJDBJ

On Apr 4, 1:04 pm, John Resig <jere...@gmail.com> wrote:
> Sure, I think that's reasonable - thanks for the code. I've already
> been working to remove most usage of .each() internally, in jQuery,
> for 1.3.3 so this should be a simple change to add in once that's
> done.
>
> --John
>
> On Fri, Apr 3, 2009 at 5:14 PM, Matt <m...@thekrusefamily.com> wrote:
>
> > This is the current .each() function:
>
> > -------------------------------------------------
> >  // args is for internal usage only
> >  each: function( object, callback, args ) {
> >    var name, i = 0, length = object.length;
> >    if ( args ) {
> >      if ( length === undefined ) {
> >        for ( name in object )
> >          if ( callback.apply( object[ name ], args ) === false )
> >            break;
> >      } else
> >        for ( ; i < length; )
> >          if ( callback.apply( object[ i++ ], args ) === false )
> >            break;
>
> >    // A special, fast, case for the most common use of each
> >    } else {
> >      if ( length === undefined ) {
> >        for ( name in object )
> >          if ( callback.call( object[ name ], name, object[ name ] )
> > === false )
> >            break;
> >      } else
> >        for ( var value = object[0];
> >          i < length && callback.call( value, i, value ) !== false;
> > value = object[++i] ){}
> >    }
> > -------------------------------------------------
>
> > First, the only place I could find that calls each() with an "args"
> > argument is in the ajax load() function:
> >  self.each( callback, [res.responseText, status, res] );
> > (hopefully this really is the only place each() is called like this,
> > but if not then perhaps this is a moot point)
>
> > The entire first half of the each() method could be removed by using
> > code like this in load() instead:
> >  self.each( function() {
> >    callback.call(this,res.responseText,status,res);
> >  });
>
> > Second, this bug:http://dev.jquery.com/ticket/4366
> > which is addressed in this 
> > thread:http://groups.google.com/group/comp.lang.javascript/msg/468705660cc10d82
> > talks about a bug in each() that can be fixed by changing the loop
> > structure.
> > This clarifies the loop structure that is there, and assures the code
> > won't break in cases like that noted in the bug report.
>
> > The result would be something like this:
>
> > -------------------------------------------------
> >  each: function( object, callback ) {
> >    var name, i = 0, length = object.length;
> >    if ( length === undefined ) {
> >      for ( name in object )
> >        if ( callback.call( object[ name ], name, object[ name ] ) ===
> > false )
> >          break;
> >    } else {
> >      for ( i=0; i<length; i++) {
> >        var value= object[0];
> >        if ( callback.call( value, i, value ) === false )
> >          break;
> >      }
> >    }
> >  }
> > -------------------------------------------------
>
> > Finally, in this recent thread, someone raised the idea of accessing
> > the whole collection from within the callback function:
> >http://groups.google.com/group/jquery-en/browse_thread/thread/b494545...
> > This could easily be done by adding:
>
> > -------------------------------------------------
> >  each: function( object, callback ) {
> >    var name, i = 0, length = object.length;
> >    if ( length === undefined ) {
> >      for ( name in object )
> >        if ( callback.call( object[ name ], name, object[ name ],
> > object ) === false )
> >          break;
> >    } else {
> >      for ( i=0; i<length; i++) {
> >        var value= object[0];
> >        if ( callback.call( value, i, value, object ) === false )
> >          break;
> >      }
> >    }
> >  }
> > -------------------------------------------------
>
> > The result would be a shorter, bug-fixed, enhanced each() method.
>
> > Thoughts?
>
> > Matt Kruse
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to