当鼠标停留在slide
div上时,slide_panel
div将变为可见。
但是,当鼠标退出slide
div并超过slide_panel
中的内容时,面板不仍然可见。
因此,一旦面板最初可见,您如何在mouseover
上看到切换面板?
<div class = "slide">category:</div>
<div class = "slide_panel">
<a href = "#" title = "">asdf</a><br />
<a href = "#" title = "">qwerty</a><br />
</div>
<div class = "slide">another category:</div>
<div class = "slide_panel">
<a href = "#" title = "">another asdf</a><br />
<a href = "#" title = "">another qwerty</a><br />
</div>
的 jQuery的:
$(".slide").mouseover(function() {
$(this).next(".slide_panel").slideToggle();
}).mouseout(function() {
$(this).next(".slide_panel").slideToggle();
});
slide_panel
然后在mouseout
上消失,基本上就像下拉菜单一样。
答案 0 :(得分:3)
如果您可以将子菜单包装在主菜单下,则可以避免此问题。
<div class="slide">category:
<div class="slide_panel"> <a href="#" title="">asdf</a>
<br /> <a href="#" title="">qwerty</a>
<br />
</div>
</div>
<div class="slide">another category:
<div class="slide_panel"> <a href="#" title="">another asdf</a>
<br /> <a href="#" title="">another qwerty</a>
<br />
</div>
</div>
$(".slide").on('mouseenter mouseleave', function () {
$(this).find(".slide_panel").stop().slideToggle();
});
答案 1 :(得分:1)
您正在触发slideToggle
两次,导致它在鼠标悬停时打开并在鼠标输出时关闭。除非mouseover
有两种我不确定的状态,否则鼠标移除时不应该保持打开状态。
答案 2 :(得分:1)
试试这个Fiddle
JS:
$(".slide").mouseover(function () {
$(".slide_panel").stop(true, true);
$(".slide_panel").hide(0);
$($(this).next(".slide_panel")[0]).slideToggle();
}).mouseout(function () {
$(".slide_panel:visible").slideToggle();
});
CSS
.slide_panel {
display: none;
}
<强>更新强>
鼠标移除句柄事件已更新。我也更新了fiddle。
$(".slide").mouseout(function () {
$(this).find(".slide_panel").stop().slideToggle();
});