単純なマルチレベルのドロップダウンボックスをモックアップしていますが、aがホバーされたときにホバーイベントを1回だけ発生させる方法がわかりませんli
。a
list-item内のタグがホバーされると、ホバーイベントが2回発生します。
これが問題を示すjsFiddleです。a
イベントが2回発生する方法を示すために、タグの周囲に追加のパディングを追加しました。パディングだけをホバーすると、イベントは1回発生しますが、a
タグをホバーすると、再び発生します。
HTML:
<ul class="dropit">
<li><a href="#">Thing 1</a></li>
<li><a href="#">Thing 2</a></li>
<li><a href="#">Thing 3</a>
<ul>
<li><a href="#">Sub-thing 1</a></li>
<li><a href="#">Sub-thing 2</a>
<ul class='sub-menu'>
<li><a href="#">Sub-sub-thing 1</a></li>
<li><a href="#">Sub-sub-thing 2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
jQuery:
$(document).ready(function(e) {
$('ul.dropit li').on('mouseover', function(event) {
$target = $(event.currentTarget);
$sub = $target.children('ul').first();
$sub.slideToggle();
}).on('mouseout', function(event) {
$target = $(event.currentTarget);
$target.children('ul').first().slideToggle();
});
});