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

Reply via email to