[jQuery] interrupting a delayed effect?
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