我有一个 <div> ,当它悬停在上面时,会显示一些文本。当鼠标离开时,文本淡出。但是,如果鼠标在完成之前再次进入 <div> fadeOut
,则文本将不再显示。
我知道hoverintent
,但我不想使用它,因为它会给mouseEnter/mouseLeave
事件带来轻微的延迟。
有没有办法在 上mouseEnter
简单地清除fadeOut
并再次显示文本?
我当前使用超时的尝试:
var timeouts = {};
$(document).ready(function(){
$('#wrapper').hover(function(){
clearTimeout(timeouts['test_hover']);
$('#text').show();
}, function(){
timeouts['test_hover'] = setTimeout(function(){
$('#text').fadeOut('slow');
});
});
});
jsbin:http: //jsbin.com/upotuw/5
视频:http ://www.youtube.com/watch?v=7RLrz1bEQuU
--
编辑:问题需要将两个参数都传递给stop()
函数:stop(true,true)
最终工作代码如下:
var timeouts = {};
$(document).ready(function(){
$('#wrapper').hover(function(){
clearTimeout(timeouts['test_hover']);
$('#text').stop(true,true).show();
}, function(){
timeouts['test_hover'] = setTimeout(function(){
$('#text').fadeOut('slow');
});
});
});