我试图在多个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);
});
答案 0 :(得分:0)
问题是你有多个lis,他们会取消开放的。您需要为每个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);
});