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

Reply via email to