我尝试在 1 秒后鼠标移出(.hover() 中的第二个函数)时隐藏子导航,为此我使用 setTimeout。我需要 setTimeout 的内部函数中的 this 变量,所以我这样尝试:
jQuery(".topnav > ul > li").hover(function() {
jQuery("ul.topnavsub").hide();
jQuery(this).find("ul.topnavsub").show();
}, function() {
var t = setTimeout((function(that){jQuery(that).find("ul.topnavsub").hide(); console.log(that);})(this), 1000);
});
这有效,但没有延迟。1. 为什么没有 1000 毫秒延迟和 2. 我必须如何才能正常工作?
如果我得到这个工作,我想补充一点:在 1000 毫秒内输入子导航时,setTimeout 停止,因此导航不会被隐藏。这就是我所拥有的,但我无法测试它导致孔 setTimeout-thing 不起作用:
jQuery(".topnav > nav > ul > li").hover(function() {
jQuery("ul.topnavsub").off();
jQuery("ul.topnavsub").hide();
jQuery(this).find("ul.topnavsub").show();
}, function() {
var t = setTimeout((function(that){jQuery(that).find("ul.topnavsub").hide(); console.log(that);})(this), 1000);
jQuery(this).find("ul.topnavsub").on("mouseenter", function() {
clearTimeout(t);
jQuery(this).off();
});
});