Stoyan, >you're right. This appears to be a stop() aftereffect. >Although a strange one, or at least - undocumented. >removing the queue() din't fix the problem, so had to set >explictly $( this ).stop().css('overflow', 'visible') >Now it works fine, I think. > >Thank you very much. > >I'll leave the demo online, everyone here is free to use the code ;)
Looking at the step() method in jQuery v1.2.3, I see the following code that appears to "clean" up the animation changes: if ( done ) { if ( this.options.display != null ) { // Reset the overflow this.elem.style.overflow = this.options.overflow; // Reset the display this.elem.style.display = this.options.display; if ( jQuery.css(this.elem, "display") == "none" ) this.elem.style.display = "block"; } // Hide the element if the "hide" operation was done if ( this.options.hide ) this.elem.style.display = "none"; // Reset the properties, if the item has been hidden or shown if ( this.options.hide || this.options.show ) for ( var p in this.options.curAnim ) jQuery.attr(this.elem.style, p, this.options.orig[p]); } To me, the stop() method should be doing a cleanup to make sure that everything in the this.options is reset to it's original value. That appears to be what's causing the overflow to change in your code. This also explains why the problem only occurs when you mouse over quickly. If you move slowly enough, the animation "step" completes--which cleans up all the stuff that jQuery automatically added. However, when the stop() method is forced to run, the cleanup never occurs. I'd open a bug for this issue. -Dan