0

我正在使用从这里获得的大型菜单脚本。它工作得很好,除了看到我的页面上有一些这些我希望有一个延迟,用户必须在菜单打开之前将鼠标悬停在链接上。

我知道当用户确实将鼠标从链接上移开时,我需要使用 setTimeout() 标记和 clearTimeout() 来执行此操作。我只是不知道该把它放在哪里。我试过只是猜测它,但无论我把它放在哪里,它似乎要么破坏功能,要么无关紧要。

感谢您为任何人提供的任何帮助,非常感谢。

4

2 回答 2

1

基本思想是这样的?

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
于 2012-07-27T12:43:08.650 回答
0

使用此功能添加任何你想要的延迟

// 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 );     
});
于 2012-07-27T12:48:31.110 回答