Odd behavior in IE8 with "live" checkbox change handlers

Odd behavior in IE8 with "live" checkbox change handlers

This is from a Stackoverflow question. Somebody noticed that live-binding a "change" event to some checkbox elements tended to cause live-bound "click" handlers to not run. We then noticed that by changing the binding order so that "click" is bound first, things worked better. Finally, I noticed that regardless of the order in which "click" and "change" handlers were bound to the checkbox elements, binding (with "bind", not "live") a do-nothing "change" handler to $('body') would make the checkbox event handlers work properly.

Here's a test page: http://gutfullofbeer.net/clicks-body.html

In that (crude) test page, you can choose to bind (with "live") the event handlers for the checkboxes in either "change"-first or "click"-first order. The first checkbox ("cbx") has no "click" handler, but the second one ("special") does have a click handler.

If you choose to bind the "change" event first, then you'll only see one "click" event for the "special" checkbox.

Now, if you then click the "Bind a handler to the body" button, you'll note that even if you set up the "live" handlers with "change" bound first, now the "special" checkbox gets all its events.

I realize that "change" is weird in IE, so my discovery here may be kind-of like discovering that when I put stuff in a weird box labeled "microwave" and push a button, the stuff gets hot. However, it'd be helpful to know exactly what internal trickery is involved here that makes for such an apparently odd effect.

(This is all with 1.4.2.)