この jquery スクリプトが完全に正常に機能する理由を理解しようとしています。
これはhtmlです:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="hover.js"></script>
</head>
<body>
<ul id="nav">
<li><a href="#">Parent 01</a></li>
<li><a href="#" class="selected">Parent 02</a>
<ul id="dropdown" style="display: none;">
<li><a href="#">Item 01</a></li>
<li><a href="#" class="selected">Item 02</a></li>
<li><a href="#">Item 03</a></li>
</ul>
</li>
<li><a href="#">Parent 03</a>
<ul>
<li><a href="#">Item 04</a></li>
<li><a href="#">Item 05</a></li>
<li><a href="#">Item 06</a></li>
<li><a href="#">Item 07</a></li>
</ul>
</li>
<li><a href="#">Parent 04</a></li>
</ul>
</body>
</html>
ご覧のとおり、シンプルなメニューです。今、css を使用して、display:none; でサブメニューを非表示にします。
そしてJquery:
$(document).ready(function () {
$('#nav li').hover(
function () {
//show its submenu
alert('enter');
$('#dropdown', this).show();
},
function () {
//hide its submenu
alert('leave');
$('#dropdown', this).hide();
}
);
});
今私が得られないのは、マウスで「Parent 02」を離れると(サブメニュー項目にカーソルを合わせると)、「mouseleave」イベントがすぐに発生せず、サブナビのイベントが処理されるまで待機する理由です。イベントキューを処理する必要があるとしか思えません。