使用setTimeout的Jquery mouseover mouseout菜单

使用setTimeout的Jquery mouseover mouseout菜单,jquery,menu,mouseover,settimeout,mouseout,Jquery,Menu,Mouseover,Settimeout,Mouseout,有人能帮我翻译一下这个简单的代码吗。。我还是个js迷,不知道自己做错了什么。基本上我想做一个鼠标悬停菜单 function showQuickLinks() { //show the menu } function hideQuickLinks() { //hides the menu } //button mouseover $("#quick-links-dd").mouseover(function() { showQuickLinks(); }); var mnuTimeout;

有人能帮我翻译一下这个简单的代码吗。。我还是个js迷,不知道自己做错了什么。基本上我想做一个鼠标悬停菜单

function showQuickLinks() {
//show the menu
}
function hideQuickLinks() {
//hides the menu
}

//button mouseover
$("#quick-links-dd").mouseover(function() { 
 showQuickLinks();
});

var mnuTimeout;

//clears timeout when it rolls over the button
$("#quick-links-dd").mouseover(function () {        
   clearTimeout(mnuTimeout);    
})

//$("#quick-links) - quick links container
//hides the menu when the mouse is not over the container
$("#quick-links").mouseout(function () {
  mnuTimeout = setTimeout("hideQuickLinks()",1000);
});
鼠标悬停在链接容器外时,不会执行代码。

是否缺少“


我遇到过丢失onmouseout事件的间歇性问题。我最终的解决方案是将mouseover事件添加到周围的元素中,并让它们取消弹出窗口。

首先,不要将字符串传递给setTimeout。是的,这是合法的,但大多数人认为这是不好的做法。相反,传递函数引用:
setTimeout(hideQuickLinks,1000)
。对待setTimeout的第一个参数的方式与对待jquery的mouseover和mouseout方法的第一个参数的方式完全相同。
("#quick-links").mouseout(function () {
  mnuTimeout = setTimeout("hideQuickLinks()",1000);
});
var mnuTimeout = null;

$(function() { 
   $("#quick-links-dd").hover() {
       clearTimeout(mnuTimeout);
       showQuickLinks();
   }, function() {  
      mnuTimeout = setTimeout(hideQuickLinks,1000);
   });
});