Javascript jquery菜单幻灯片悬停函数加载过快
我目前正在制作一个网站,其中包含一个菜单导航,几乎与在only上找到的相同,而不是向下指向上。无论如何,我使用jquery/javascript为菜单编写了代码,它可以正常工作,但我想知道是否有办法使悬停函数在指定的时间内不生效。这样,当您将鼠标快速悬停在某个项目上时,不会导致页面不必要地加载。如果有人有任何建议,我将不胜感激 下面是创建菜单导航的部分代码的副本。我遇到的另一个问题是,如果您将鼠标悬停在一行中过多的导航项上,箭头会落在后面。我希望通过在hover函数生效之前创建一个等待时间,它可以基本上纠正这个问题Javascript jquery菜单幻灯片悬停函数加载过快,javascript,jquery,menu,Javascript,Jquery,Menu,我目前正在制作一个网站,其中包含一个菜单导航,几乎与在only上找到的相同,而不是向下指向上。无论如何,我使用jquery/javascript为菜单编写了代码,它可以正常工作,但我想知道是否有办法使悬停函数在指定的时间内不生效。这样,当您将鼠标快速悬停在某个项目上时,不会导致页面不必要地加载。如果有人有任何建议,我将不胜感激 下面是创建菜单导航的部分代码的副本。我遇到的另一个问题是,如果您将鼠标悬停在一行中过多的导航项上,箭头会落在后面。我希望通过在hover函数生效之前创建一个等待时间,它可
$("div#menu .reps").hover(function() {
if(current_slide != "reps"){
$(".arrow").animate({"left":"135px"});//move the arrow
if(current_slide == "clients"){
$(".clients_display").stop(true, true).fadeOut().hide();
$(".reps_display").fadeIn().show();
current_slide = "reps";
}
else if(current_slide == "services"){
$(".services_display").stop(true, true).fadeOut().hide();
$(".reps_display").fadeIn().show();
current_slide = "reps";
}
else{
$(".training_display").stop(true, true).fadeOut().hide();
$(".reps_display").fadeIn().show();
current_slide = "reps";
}
}
});
您可以在某些通话中使用
延迟
,例如:
$(“.reps_display”).delay(100.fadeIn().show()代码>
或者你可以让一些的show
和的hide
有更长的持续时间:show(2000)
例如。我认为你可以做一些事情,尽管可能有更好的方法:
声明一个函数,在该函数中放置所有带条件的代码:
function hoverFunc(option)
{
if($(option).is(':hover'))
{
all the code to show the menu
}
}
在over函数中,您可以执行以下操作:
$("div#menu .reps").hover(function() {
setTimeout("hoverFunc('"+getOptionName+"')",milliseconds);
});
其思想是:当结束时,设置一个超时,当达到超时时,检查鼠标是否结束,然后做任何你想做的事情,最困难的一点是传递对函数的引用,但是你可以传递从html或rel属性获取的项的名称
但是,如果您不需要引用,那么它非常简单,只需调用函数并检查元素即可
还有一个可能对你更有趣的选择。您可以在“所有效果”中添加一个延迟并在之前添加一个停止(true),这样,如果用户快速更改标记,事件将被取消,但如果用户快速通过一个选项并退出菜单,事件将被取消。这不就是延迟显示非实际悬停事件吗?有什么区别。。如果您延迟内部事件的触发,它将基本上实现相同的效果。我不确定不使用setTimeout还能做什么,它基本上做同样的事情,这是@Mario下面回答的另一个很好的选项。我在代码中添加了一种setTimeout形式,所以现在在菜单项之间切换时,它看起来更平滑了,但我不知道如何检查它在给定的时间后是否仍在某个菜单项上徘徊,但目前这并不是什么大问题。