setTimeout 与多个项目
setTimeout with multiple items
我尝试在多个 li 项目上设置 setTimeout 函数,这些项目再次具有 ul 和 li。幻灯片动画效果很好,但我想在再次关闭 slideUp 之前有一个延迟。但它不起作用。幻灯片下降但不会再次上升。我认为这是因为我必须为每个 li ul(索引)都有一个索引 setTimeout 函数。但我不知道如何让它工作。谁能指出我正确的方向?谢谢!
var menu = $('#menu').find('li').has('ul');
var timer;
menu.on('mouseenter', function(){
clearTimeout(timer);
$(this).find('>ul').stop().slideDown();
});
menu.on('mouseleave', function(){
clearTimeout(timer);
timer = setTimeout(function() {
$(this).find('>ul').stop().slideUp();
},1000);
});
问题是你有多个列表,它们会抵消打开的列表。您需要为每个 li 分配超时,或者您需要查看它们是否是另一个打开的 li 以关闭它。
var lis = $('#menu').find('li').has('ul');
lis.on('mouseenter', function(){
var li = $(this);
var timer = li.data("timer");
clearTimeout(timer);
$(this).find('>ul').stop().slideDown();
});
lis.on('mouseleave', function(){
var li = $(this);
var timer = setTimeout(function() {
$(this).find('>ul').stop().slideUp();
},1000);
li.data("timer", timer);
});
我尝试在多个 li 项目上设置 setTimeout 函数,这些项目再次具有 ul 和 li。幻灯片动画效果很好,但我想在再次关闭 slideUp 之前有一个延迟。但它不起作用。幻灯片下降但不会再次上升。我认为这是因为我必须为每个 li ul(索引)都有一个索引 setTimeout 函数。但我不知道如何让它工作。谁能指出我正确的方向?谢谢!
var menu = $('#menu').find('li').has('ul');
var timer;
menu.on('mouseenter', function(){
clearTimeout(timer);
$(this).find('>ul').stop().slideDown();
});
menu.on('mouseleave', function(){
clearTimeout(timer);
timer = setTimeout(function() {
$(this).find('>ul').stop().slideUp();
},1000);
});
问题是你有多个列表,它们会抵消打开的列表。您需要为每个 li 分配超时,或者您需要查看它们是否是另一个打开的 li 以关闭它。
var lis = $('#menu').find('li').has('ul');
lis.on('mouseenter', function(){
var li = $(this);
var timer = li.data("timer");
clearTimeout(timer);
$(this).find('>ul').stop().slideDown();
});
lis.on('mouseleave', function(){
var li = $(this);
var timer = setTimeout(function() {
$(this).find('>ul').stop().slideUp();
},1000);
li.data("timer", timer);
});