我有一个小菜单,想在悬停时将类添加到子菜单项中。检查您将理解的代码:
的HTML
<ul class="root">
<li>Menu1
<ul class="submenu">
<li>Menu11</li>
<li>Menu12</li>
</ul>
</li>
<li>Menu2
<ul class="submenu">
<li>Menu21</li>
<li>Menu22</li>
</ul>
</li>
</ul>
JS
$('.root li').mouseenter( function( e1 ) {
var thisItem = $(this);
setTimeout( function( e1 ) {
if ( $(thisItem).children().hasClass('open') ) {
return;
} else {
$(thisItem).children().addClass('open');
$(thisItem).siblings().children().removeClass('open');
}
}, 200 );
}).mouseleave( function( e2 ) {
var thisItem = $(this);
setTimeout( function( e2 ) {
if ( !$(thisItem).children().hasClass('open') ) { return; } else {
$(thisItem).children().removeClass('open');
}
}, 500 );
});
一些 CSS
.root li { display: inline-block; background: #eee; color: #333 }
.root li:hover { background: #333; color: #fff }
.submenu li { clear: both }
.root li ul {display: none}
.root li ul.open {display: block}
问题
当鼠标移出 menu12 或 menu22 并重新进入时,在鼠标移出后的 500ms 超时期间,子菜单会冒泡并最终关闭。
小提琴
感谢您的任何回复