也许这段代码可以帮助你。
JS:
$("img[id^='menu']").hover(function(){
$("div[id^='submenu']").hide();
$("#sub" + $(this).attr("id")).show();
},
function(){
var it = this;
setTimeout(function(){
var submenu = $("#sub" + $(it).attr("id"));
if(submenu.length > 0 && !submenu.is(":hover")){
submenu.hide();
}
}, 200);
});
$("div[id^='submenu']").hover(function(){
},
function(){
$(this).hide();
});
$("div[id^='submenu']").hide();
HTML:
<!--menu btn to hover above:-->
<img src="http://www.stackoverflow.com/favicon.ico" alt="menu1" id="menu1" height="30"/>
<img src="http://www.stackoverflow.com/favicon.ico" alt="menu1" id="menu2" height="30"/>
<img src="http://www.stackoverflow.com/favicon.ico" alt="menu1" id="menu3" height="30"/>
<img src="http://www.stackoverflow.com/favicon.ico" alt="menu1" id="menu4" height="30"/>
<!--completly unrelated submenu:-->
<div id="submenu3" >
This is a submenu3
</div>
<div id="submenu2" >
This is a submenu2
</div>
<div id="submenu4" >
This is a submenu4
</div>
使用此代码,您有时可以发现小错误。问题出在 setTimeout 上。如果您太慢,子菜单将被隐藏。困难来自 DOM 组织,但你假设它。
这里有一个jsfiddle来测试代码。