.shift()(). Gotta love that syntax. How about an array of function generator functions? .shift()()(); Weee! JavaScript is fun!
Could you not remove that anonymous function wrapping doStuff()? Like: stack.actions.push($(that).dostuff); --Erik On 9/4/07, Franck Marcia <[EMAIL PROTECTED]> wrote: > > > You could also pile up actions then run them (untested): > > var stack = { > delay: 1000, > actions:[], > run: function() { > if (stack.actions.length) { > stack.actions.shift()(); > setTimeout(stack.run, stack.delay); > } > } > }; > > $(elems).each(function(){ > var that = this; > stack.actions.push(function(){ > $(that).dostuff(); > }); > }); > > stack.run(); > > Franck. > > Karl Rudd a écrit : > > For _most_ browsers changes in the CSS are not reflected in the layout > > until _after_ your JavaScript is finished executing. I believe the > > exception is Opera (or is it Safari...?), which also updates the > > layout after a certain amount of time. > > > > If you want to display the changes progressively you'll need to use a > > setTimeout() called function. Something like: > > > > function dostuff( elem ) { > > elem.dostuff(); > > } > > > > $(elems).each(function(){ > > var elem = this; > > setTimeout( function(){ dostuff( elem ); }, 0 ) > > }); > > > > Due to the fact that JavaScript is single threaded, the functions > > called using setTimeout will be called one after the other. There is a > > "break" after each call which should allow the browser to update the > > layout of the page. > > > > If the 0 delay in the setTimeout doesn't work then change something like > 20. > > > > Karl Rudd > > > > On 9/4/07, boermans <[EMAIL PROTECTED]> wrote: > > > > > > I'm looking for a tidy way to call a function to iterate over a group > > > of DOM elements, with a small delay after the function completes > > > before it is called again with the following element. > > > > > > Pseudo code: > > > ========== > > > $(elems).each(function(){ > > > $(this).dostuff(); > > > // wait a moment > > > // continue > > > }); > > > > > > I am aware of the pause plugin (linked on the old plugin page) but I'm > > > confused by it's reference to type. My function does not use any fx or > > > animations - what other 'types' are there in jQuery? > > > > > > Why you ask? > > > ========== > > > My attempted script manipulates a bunch of css attributes based on > > > dimensions and positions of elements in the DOM. I believe I need the > > > delay to give the browser an opportunity to update between each call - > > > ensuring the DOM is updated the script's css changes before > > > proceeding. > > > > > > Perhaps I could use .animate() and it's callback function to iterate? > > > My attempts at this are a mess! Any help is welcome. > > > > > > Cheers > > > Ollie > > > > > > > >