所以我有一个元素(链接),通过悬停在它上面来控制另一个元素(目标)的可见性。 当鼠标悬停链接时,目标应该转为可见状态,当鼠标离开时,目标应在2秒后变为不可见状态。Jquery悬停隐藏/显示:setTimeout clearTimeout
到目前为止这么好。但我该如何做到这一点,以便在2秒钟之前将鼠标悬停在可见目标上方时,目标保持可见状态?
我用setTimeout和clearTimeout搞定了一些工作,但它确实很麻烦,而且感觉不太好。
var time = 1000;
$(".link").hover(
function() {
$('.target').css('display', 'none');
clearTimeout($(this).data('timeout'));
$('.target').css({'display': 'block'});
},
function() {
var timer = setTimeout(function() {$('.target').fadeOut(1000).delay(100).css('display', 'none'); clearTimeout(timer); }, time);
$('.target').hover(
function() {
clearTimeout(timer);
},
function() {
var timer = setTimeout(function() {$('.target').fadeOut(1000).delay(100).css('display', 'none'); clearTimeout(timer); }, time);
}
);
}
);
任何帮助,将不胜感激。
干杯
感觉真的很接近,但是创造马车行为的事件仍然存在。忘了在原帖中提及它。 如果您在离开后立即将链接悬停,则超时不会清除。 换句话说。如果你真的很快从链接区域进出,那么目标div仍然会走路,有时它会产生一些不稳定的行为。 –
我明白了。这很奇怪,我会检查代码。 –
当然,我忘了分配'定时器'var变焦我的坏。 @PedroGonçalves刚刚更新了我的代码和小提琴。 –