It's not the jsperf runner, ie. any "settling" of GC sweeping, or anything of that nature.
It's surprisingly the location of the DOM elements. See here, I've swapped the two elements, and now the result is _backwards_
http://jsperf.com/always-return-on-jquery-events/21
Can anyone with knowledge of the webkit internal DOM id-based key/hashtable shed light on this?
I'm guessing that for the 2nd child, when it's propagating upwards, it has to hit 1 more element -- that is, if it must reach the first child to get the parent. I'd hope that the structure is more optimized than a simple crawl to the first node to go upwards.
EDIT: Actually, I'm wrong. I edited the test to have 6 divs, and re-arranged the order of the tests. The tests still come in performance-wise from first-to-last, first performing the best. I really don't know what to think now.