添加延迟到鼠标输出功能

时间:2010-05-10 09:21:55

标签: javascript jquery html

我有一个下拉菜单,

<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');
  });

请做到这一点。

提前致谢

2 个答案:

答案 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);
  });