Test harness for jQuery mouseenter/mouseleave bug

Test harness showing that jQuery's emulated mouseenter and mouseleave events do not fire when the page is scrolled via the mousewheel, unless the mouse is moved afterwards. The same is partially true in IE - the events will not fire unless there is some sort of user input, but it doesn't have to be moving the mouse, e.g. scrolling the wheel again, or pressing Caps Lock, will fire off the event(s).

CSS

div {
    margin: 25px;
    padding: 25px;
    background-color: lightgrey;
}

div.entered {
    background-color: red;
}

div.exited {
    background-color: lightblue;
}

p {
    border: 1px dotted grey;
    background-color: white;
    padding: 10px;
}

JavaScript

function entryFunc(e) {
    $(e.currentTarget).addClass('entered').removeClass('exited');
}

function exitFunc(e) {
    $(e.currentTarget).removeClass('entered').addClass('exited');
}

$(function() {
    for (var loop=0; loop<10; loop++) $(document.body).append(
        $('<div>').attr('id', 'div' + loop).append(
            $('<p>').attr('id', 'p' + loop).text('Paragraph inside div' + loop)
      )
   )

/*cc_on @if (@_jscript) {

    // IE
    var divs = document.querySelectorAll('div');
    if (document.body.addEventListener) {    // IE 9, 10
        for (loop=divs.length; loop--;) {
            divs[loop].addEventListener('mouseenter', entryFunc, false);
            divs[loop].addEventListener('mouseleave', exitFunc, false);
        }
    } else {                                // IE 8 (anything less errors on querySelectorAll)
        for (loop=divs.length; loop--;) {
            divs[loop].attachEvent('onmouseenter', entryFunc);
            divs[loop].attachEvent('onmouseleave', exitFunc);
        }
    }

} @else { @*/

    // Non-IE
    $('div').mouseenter(entryFunc).mouseleave(exitFunc);

/*@end @*/

})