我正在使用从这里获得的大型菜单脚本。它工作得很好,除了看到我的页面上有一些这些我希望有一个延迟,用户必须在菜单打开之前将鼠标悬停在链接上。
我知道当用户确实将鼠标从链接上移开时,我需要使用 setTimeout() 标记和 clearTimeout() 来执行此操作。我只是不知道该把它放在哪里。我试过只是猜测它,但无论我把它放在哪里,它似乎要么破坏功能,要么无关紧要。
感谢您为任何人提供的任何帮助,非常感谢。
我正在使用从这里获得的大型菜单脚本。它工作得很好,除了看到我的页面上有一些这些我希望有一个延迟,用户必须在菜单打开之前将鼠标悬停在链接上。
我知道当用户确实将鼠标从链接上移开时,我需要使用 setTimeout() 标记和 clearTimeout() 来执行此操作。我只是不知道该把它放在哪里。我试过只是猜测它,但无论我把它放在哪里,它似乎要么破坏功能,要么无关紧要。
感谢您为任何人提供的任何帮助,非常感谢。
基本思想是这样的?
var timeout;
$('#menuID').mouseenter(function(){
clearTimeout(timeout);
$(this).children().show();
}).mouseleave(function(){
timeout = setTimeout(function(){
$(this).children().hide();
},400);
});
请注意,制造商使用与上述相同的方式:
" ps:在 .js 文件中,您可能希望微调两个变量: "
effectduration: 300, //duration of animation, in milliseconds
delaytimer: 200, //delay after mouseout before menu should be hidden, in milliseconds
使用此功能添加任何你想要的延迟
// Function declatation
var delay = (function()
{
var timer = 0;
return function(callback, ms)
{
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
用法:
delay(function()
{
// Do thing you want delayed
}, 1000 );
替换1000
为您想要延迟的毫秒数
编辑
$("#menuitem").mouseenter(function()
{
delay(function()
{
if($(this).is(':hover'))
// Show menu
}, 1000 );
});