我正在使用一个菜单和一个多子菜单。当您将鼠标悬停在菜单项上时,应该出现子菜单,当您将鼠标移开时,它应该消失。虽然这工作,我希望鼠标功能有一个延迟,我已经尝试了多种方法,但我似乎无法让它工作。我想添加延迟到我的JavaScript函数,但不知道如何
请注意:我使用mouseout函数而不是fadeToggle的原因是因为我有多个项目可以进行悬停。所以,如果我将鼠标从menhuitem-1移动到menuitem-2,我希望那个人出现在它上面,反之亦然。
这是我的代码(它的工作原理,但我想鼠标移开时的延迟):
$(function(){
$("#menuitem-1").hover(function(e){
$("#subitem-1").stop().toggle().css('z-index', '1000');
});
});
$(function(){
$("#menuitem-1").mouseout(function(e){
$("#subitem-1").stop().css('z-index', '1');
});
});
您是否尝试过包装在一个setTimeout的鼠标移开的电话: http://www.w3schools.com/jsref/ met_win_settimeout.asp – ewein 2014-11-03 16:52:46
'hover'意思是'mouseenter'和'mouseleave',所以你有矛盾的处理程序。另外,'mouseout'也会触发后代,因此您应该使用'mouseleave'。另外,多个'$(function(){...})处理程序绝对没有理由。把所有的代码放在一个。最后,你可以使用'setTimeout'来延迟代码。很多关于这方面的信息。 – 2014-11-03 16:52:52
...从你的ID的外观来看,你可能会一遍又一遍地重复几乎相同的代码。如果是这样,请访问http://codereview.stackexchange.com/以获取重构帮助。 – 2014-11-03 16:56:02