2011-11-07 115 views
0

我目前使用此代码:延迟jQuery的.live鼠标悬停功能

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

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

当用户将鼠标悬停在#startLabel DIV显示工具提示股利和隐藏工具提示,当用户移动光标了。

我想改变这一点,以便在#startLabel div被悬停3秒后才会出现工具提示,有人能告诉我怎么做到这一点吗?

我已经试过这样:

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

但提示如果您快速将鼠标悬停在它,然后悬停客场仍然出现。

感谢您的任何帮助。

+0

看到http://api.jquery.com/delay/ –

回答

0

我怀疑你想要的是clearTimeout函数。

你会使用它是这样的:

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

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

本质的setTimeout返回一个可用于取消超时所以你只要取消它,如果你有问题迁出区的价值。

+0

谢谢!有一点调整我得到这个工作 –

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

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

+0

延迟只是延迟显示的东西。它不会停止显示的项目,如果你快速地将鼠标悬停在外...... – Chris

+0

这是因为即使在鼠标悬停时,动画队列仍然存在。使用.stop()清除所选对象的队列 – John

+0

您应该能够编辑您的答案,以便将其放入。由于它存在与OP原始代码完全相同的问题,因此您的答案不正确。 – Chris