延迟Jquery .live鼠标悬停功能

时间:2011-11-07 12:37:28

标签: jquery

我目前正在使用此代码:

    $('#startLabel').live('mouseover',function(){
$('.startTooltip').fadeIn();
     });

    $('#startLabel').live('mouseout',function(){
$('.startTooltip').fadeOut();
     }); 

当用户将鼠标悬停在#startLabel div上时显示工具提示div,并在用户将光标移开时隐藏工具提示。

我想更改此设置,以便在#startLabel div悬停3秒后才会显示工具提示,是否有人可以告诉我如何执行此操作?

我试过这个:

    $('#startLabel').live('mouseover',function(){
    setTimeout( function() {
$('.startTooltip').fadeIn();
}, 3000 );
     });

但是如果您将鼠标悬停在它上面然后将其悬停,工具提示仍会显示。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

$('#startLabel').live('mouseout',function(){
    $('.startTooltip').delay(4000).fadeIn();
 }); 

并使用.stop([clearQueue] [,jumpToEnd])清除mouseout上的队列; [(true,false)应该这样做。]

答案 1 :(得分:0)

我怀疑你想要的是clearTimeout功能。

您可以使用以下内容:

var timer;
$('#startLabel').live('mouseover',function(){
    timer = setTimeout( function() {
    $('.startTooltip').fadeIn();
    }, 3000 );
});

$('#startLabel').live('mouseout',function(){
    $('.startTooltip').fadeOut();
    cancelTimeout(timer);
}); 

本质上,setTimeout返回一个可用于取消超时的值,因此如果你离开相关区域,你就取消它。