我有一个下拉菜单,
<ul>
<li><a>link 1</a>
<ul><li><a>link 1</a></li></ul>
</li>
</ul>
我使用以下JS来使用悬停并显示子菜单。
我想为鼠标输出功能添加延迟(当删除LI的类时)约500ms,
$('li').hover(function(){
$(this).addClass('over');
}, function(){
$(this).removeClass('over');
});
请做到这一点。
提前致谢
答案 0 :(得分:7)
您可以这样做:
$('li').hover(function(){
var timer = $(this).data('timer');
if(timer) clearTimeout(timer);
$(this).addClass('over');
}, function(){
var li = $(this);
li.data('timer', setTimeout(function(){ li.removeClass('over'); }, 500));
});
这会在将鼠标悬停在其上时清除任何超时(如果你悬停,离开,将鼠标悬停回来需要检查),并在离开悬停时设置500毫秒的延迟,使用{{3}将超时ID存储在li本身上}。
答案 1 :(得分:1)
$('li').hover(function(){
$(this).addClass('over');
}, function(){
setTimeout(function(){$(this).removeClass('over')}, 500);
});