下面的代碼基本上是我想要做的,我知道這是不正確的代碼。如何清除.hover()事件中的超時函數?
因此,對於下拉菜單,我想延遲地隱藏它。問題是,當我在隱藏延遲完成之前將鼠標懸停在另一個菜單項上時,它將覆蓋下一個handlerIn
。
那麼有沒有簡單的方法來清除setTimeout
隊列在下一個hover()
?
再次,下面的不正確的代碼只是爲了解釋。
$('nav > ul > li').hover(function() {
clearTimeout(menuHide);
$(this).find('ul').show();
}, function() {
var menuHide = setTimeout(function() {
$(this).find('ul').hide();
}, 150);
});
UPDATE:好像clearInterval()
是不是我要找的,因爲我還是想讓它完成,而不是放棄它。
有沒有completeInterval()
? :)
當然!但我發現clearInterval不是我正在尋找的東西。查看我的更新。謝謝 – fishbaitfood
如果你只是從懸停中取出clearTimeout(menuHide),會發生什麼?我會想象你的超時會完成。 – Chase
是的,確切地說。但是,如果我在setTimeout()完成之前將鼠標懸停在另一個菜單項上,它會覆蓋下一個'hoverIn'處理程序的代碼。這使我的下拉菜單行爲錯誤。 – fishbaitfood