setTimeout延迟不起作用-我做错了什么

setTimeout delay not functioning - what have I done wrong?

本文关键字:错了 什么 延迟 不起作用 setTimeout      更新时间:2023-09-26

我已经把一段代码下拉菜单,绑定到.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> &nbsp;&nbsp;&nbsp; <a href="#">Edit an Offer</a> &nbsp;&nbsp;&nbsp; <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> &nbsp;&nbsp;&nbsp; <a href="#">Edit a Rotation</a> &nbsp;&nbsp;&nbsp; <a href="#">Get Rotation Links</a>');
  }
}, function() { setTimeout(retract(), 4000); });

如果有人能评论/回答为什么延迟似乎不起作用,将不胜感激!

setTimeout(retract(), 4000)
应该

setTimeout(retract, 4000)

前者立即执行retract,然后将其返回值(即undefined)传递给setTimeout。由于undefined不是一个函数,setTimeout试图将其转换为字符串和eval,做精确的…没有。

后者表示"从现在开始运行函数retract 4000毫秒"。