It seems that using the setTimeout() directly, without use of the pause-plugin, do the trick, b/c this can be "undone" with clearTimeout().
$('#navigation>ul>li>a').mouseover( function(){ var myList = $(this).parent('li').children('ul'); if( myList.css('display') != 'block' ){ timer = setTimeout( function(){ myList .slideDown('slow'); } , 1500 ); } return false; } ); $('#navigation>ul>li>a').mouseout( function(){ var myList = $(this).parent('li').children('ul'); if( myList.css('display') != 'block' ){ clearTimeout(timer); } return false; } ); On 27 Okt., 10:51, webrocker <[EMAIL PROTECTED]> wrote: > hi group, > > I use the pause-plugin (http://blog.mythin.net/projects/jquery.php) to > delay an slidedown-effect in my navigation if the user mouseovers a > link. I have slightly modified it to get it to work (changing line 29 > from > $.dequeue(self) > to > $(self).dequeue() > > So this works fine: > > $('#navigation>ul>li>a').mouseover( > function(){ > $(this).parent('li').children('ul') > .pause() > .slideDown('slow'); > return false; > } > ); > > but - I want to stop the timeout and ignore the slidedown if the user > mouseouts the link before the animation begins. > > I thought that using the "unpause" function from the plugin like this > > $('#navigation>ul>li>a').mouseout( > function(){ > $(this).parent('li').children('ul') > .unpause(); > } > ); > > would do the trick, but it doesn't; the animation will start after the > delay. > Is there a way to "kill" the timeout and the associated function? > > here is my modified plugin-code: > > $.fn.pause = function(milli,type) { > milli = milli || 1000; > type = type || "fx"; > return this.queue(type,function(){ > var self = this; > setTimeout(function(){ > $(self).dequeue(); > },milli); > }); > > }; > > $.fn.clearQueue = $.fn.unpause = function(type) { > return this.each(function(){ > type = type || "fx"; > if(this.queue && this.queue[type]) { > this.queue[type].length = 0; > } > }); > > }; > > thanks > Tom