我正在模拟一个简单的多级下拉框,并且无法弄清楚如何在 a 悬停时仅触发一次悬停事件li
。a
当列表项内的标签悬停时,悬停事件会触发两次。
这是一个演示问题的 jsFiddle。我在a
标签周围添加了额外的填充,以显示事件如何被触发两次。如果只是悬停填充,事件将触发一次,但一旦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();
});
});