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 -~----------~----~----~----~------~----~------~--~---