您好,匿名用户
随意问技术百科期待您的加入

setTimeout这样用对么?

0 投票
$('.menu li').mouseover(function(){
			obj = $(this).find('.sub-menu');
			t1 = setTimeout(function () {obj.slideDown(600)}, 500);
		}).mouseout(function(){
			t2 = setTimeout(function () {obj.slideUp(600)}, 1500);
			clearTimeout(t1,t2);
		});

最终我这么写的:

$('.menu li').hover(function(){
                        var obj = $(this).find('.sub-menu');
                        t1 = setTimeout(function () {obj.slideDown(600)}, 500);
			clearTimeout(t2);
                },function(){
                        var obj = $(this).find('.sub-menu');
                        t2 = setTimeout(function () {obj.slideUp(600)}, 1500);
			clearTimeout(t1);
                });

由于使用了mouseover和mouseout后导致鼠标移动到sub-menu上会自动slideUp,用改为hover解决问题。
由于不clearTimeout导致鼠标只要经过.menu li上方过500ms后仍会执行slidedown()这样容易造成误操作。
lazyboy的答案无法触发下方代码。故综合了Frank和lazyboy的答案。

第三次修改

$('.menu li').hover(function(){
                        var obj = $(this).find('.sub-menu');
                        t1 = setTimeout(function () {obj.slideDown(400)}, 500);
                },function(){
                        var obj = $(this).find('.sub-menu');
                        obj.slideUp(1000);
			clearTimeout(t1);
                });

移除了t2的原因是如果从一个.menu li上展开了.sub-menu并又移动到了另外一个.menu li上,那么会执行clearTimeout(t2),这样会导致前一个的.sub-menu不会slideUp。上面代码是我想到的解决方案,实在只能放弃t2了,有更好的方法么?

新问题:
鼠标如果从.sub-menu移开又马上回来,能不能取消slideup执行并恢复成.sub-menu展开的状态

用户头像 提问 2013年 11月23日 @ Ashe 上等兵 (336 威望)
分享到:

1个回答

0 投票
 
最佳答案

不对;你的代码中的几个地方不合适:
1.obj = $(this).find('.sub-menu'); 这里声明了一个全局变量
2.clearTimeout(t1,t2); 这里不需要清除

我觉得应该这样

$('.menu li').mouseover(function(){
                        var obj = $(this).find('.sub-menu');
                        setTimeout(function () {obj.slideDown(600)}, 500);
                }).mouseout(function(){
                        var obj = $(this).find('.sub-menu');
                        setTimeout(function () {obj.slideUp(600)}, 1500);
                });
用户头像 回复 2013年 11月21日 @ Ezreal 上等兵 (266 威望)
选中 2013年 9月7日 @Ashe
提一个问题:

相关问题

0 投票
1 回复 49 阅读
0 投票
1 回复 41 阅读
0 投票
0 回复 3 阅读
用户头像 提问 2014年 5月24日 @ Amumu 上等兵 (340 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Irelia 上等兵 (292 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...