我为一个下拉菜单放了一段代码,绑定到.hover()
,但遗憾的是setTimeout()
上的延迟似乎不起作用,只要鼠标是从.button
移出,它将#sub-nav
的显示属性设置为none
。
Dreamweaver CS 5.5将语法评估为正确:(。
这是我的代码:
function retract(){ $('#sub-nav').css('display', 'none'); }
$('#header-restrict > .button').hover( function() {
if($(this).html() == "Offers") {
$('#sub-nav').css('display', 'block');
$('#sub-nav').html('<a href="#">Add a New Offer</a> <a href="#">Edit an Offer</a> <a href="#">Get Offer Links</a>');
}
if($(this).html() == "Rotations") {
$('#sub-nav').css('display', 'block');
$('#sub-nav').html('<a href="#">Add a New Rotation</a> <a href="#">Edit a Rotation</a> <a href="#">Get Rotation Links</a>');
}
}, function() { setTimeout(retract(), 4000); });
如果有人可以评论/回答为什么延迟似乎不起作用,我们将不胜感激!
答案 0 :(得分:4)
setTimeout(retract(), 4000)
应该是
setTimeout(retract, 4000)
前者立即执行retract
,然后将其返回值(即undefined
)传递给setTimeout
。由于undefined
不是函数,setTimeout
会尝试将其转换为字符串并将eval
转换为字符串,而正是......没有。
后者说“从现在开始运行函数retract
4000 ms。”