For example, will the first piece of code perform a full search twice, or is it smart enough to cache results if no DOM changes have occurred?
if ($(\"#navba
jQuery Sizzle does automatically cache the recent functions that have been created from the selectors in order to find DOM elements. However the elements themselves are not cached.
Additionally, Sizzle maintains a cache of the most recently compiled functions. The cache has a maximum size (which can be adjusted but has a default) so you don’t get out-of-memory errors when using a lot of different selectors.
jsPerf is down today, but this article suggests that the performance gains from caching jQuery selectors would be minimal.
This may simply be down to browser caching. The selector tested was only a single id. More tests should be done for more complicated selectors and different page structures...