所以我有一個元素(鏈接),通過懸停在它上面來控制另一個元素(目標)的可見性。 當鼠標懸停鏈接時,目標應該轉爲可見狀態,當鼠標離開時,目標應在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剛剛更新了我的代碼和小提琴。 –