我有一个< 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');
});
});
});