If I have code like:
hoverinit: function(){
this.delay(0)
$("#someelement").show();
}.
hoverenter: function(){
console.log("Called")
}
where #someelement hides the to-be-hovered element, a mouseleave is immediately triggered before the hovered flag is set.
If the user is setting delay to 0, they most likely want to be using leave this.leave(2000) and want a hoverenter no matter what.
The fix is to recognize this as a special case and always fire hoverenter and set hovered to true.