我模擬了一個簡單的多級下拉框,並且無法弄清楚如何在懸停li
時讓懸停事件僅觸發一次。當列表項內部的a
標籤懸停時,懸停事件觸發兩次。懸停事件在兒童懸停時發射兩次
這是一個演示問題的jsFiddle。我在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();
});
});