I was having the same problem. The jquery animate function moves the element out from under the mouse cursor and thus does not receive the mousemove or mouseleave event that would reset the :hover
state to off.
I found that I couldn't use the CSS pseudo-class selectors, and instead had to rely on the jquery hover()
api method to add/remove a separate CSS class manually.
$('li.hoverable').hover(
function () { $(this).addClass('hovering'); },
function () { $(this).removeClass('hovering'); });
Then later
// animate back to the final position
elem.animate({ top: 0, left: 0 }, 400, "easeInOutCubic",
function () { elem.removeClass('hovering'); });