-
-
Save cowboy/503362 to your computer and use it in GitHub Desktop.
// Plugin released: | |
// http://benalman.com/projects/jquery-misc-plugins/#each2 |
I like the backwards-compatible each
... that may be a better option than adding a new quickEach
method.
James, check out the new, third, approach.. it might be a good compromise!
Note that there is some extra-args-passing that the current jQuery.fn.each does that would have to be added in, but that's just an array concat / apply.
Can this be added to the core? I think it would be worth it!
Also, I think it'd be best to add the try-catch
-- an exception thrown in a callback several times could cause a memory leak -- I might be completely wrong about this, but the fact that jq[0]
won't be cleared presents a potential issue.
Plus I think the backwards-compatible suggestion is definitely the way to go!
Mike, any time I post/release a plugin, if I can make it backwards-compatible with older jQuery versions easily I will.. Since $([])
is a backwards-compatible way of "selecting" an empty set, I'll use that. Of course, for older jQueries, selecting document won't really consuming a whole lot of memory, but still.. that's how I roll!
James, I was thinking of releasing this as a standalone "jQuery fast .each" plugin, with code pretty much just as it is in this gist, and with the callback signature fn.call( dom_elem, i, jq_object )
. Would you object to that? (I don't want to step on your toes here)
I also definitely think that this should be considered for inclusion in core, with Resig making whatever decision regarding its signature/context if necessary, should it ever get to that point. I personally feel that changing jQuery's .each
signature from fn.call( dom_elem, i, dom_elem )
to fn.call( dom_elem, i, jq_object )
would be acceptable, but that's obviously not my call.
Ok, major correction.. this is going to be WAY slower than the core .each
in scenarios where the user doesn't need a jQuery object inside the callback... so it should definitely be a separate method. See http://jsperf.com/jquery-each-vs-quickeach/2
Ok, pluginized and released!
Nice! Thanks for having a look Ben!
The
try-catch
is to make sure thatjq[0]
is cleared (even if an exception is thrown within the callback) -- otherwise memory leaks could potentially occur -- it's an edge case, but still...