【发布时间】:2013-03-07 20:55:47
【问题描述】:
我正在使用带有 jquery 的 superfish (http://users.tpg.com.au/j_birch/plugins/superfish/#aa) 来进行菜单控制。几乎所有的元素都设置在
$(document).ready(function () {
$("#menu").superfish({
delay: 400,
onHide: function () { $("#HideThis").hide(); }
});
});
但是,它会在 HideThis 悬停时隐藏 HideThis(没有悬停事件绑定到该元素)。这使得菜单项无法使用,因为当您尝试单击它而不是菜单关闭时它会隐藏。似乎没有任何其他事件可以符合我的目的,有什么想法可以通过超级鱼来实现吗?
我使用的 HTML 如下所示:
<ul id="menu">
<li id="Stuff"><span>Stuff</span>
<ul>
<li id="HideThis" ><span>Hide This</span>
<ul>
<li><span>Hidden Stuff</span></li>
</ul>
</li>
<li id="DontHideThis" ><span>Dont Hide This</span></li>
</ul>
</li>
</ul>
编辑: 我能够找出问题所在:每次隐藏子菜单时都会触发“onHide”事件,而不仅仅是在整个菜单隐藏时(有趣的是,它也会在菜单首次显示时触发;所以 onHide 发生的频率比你高得多会期望)。所以,我最终不得不像这样过滤 onHide:
$(document).ready(function () {
$("#menu").superfish({
delay: 400,
onHide: function () { if ($('ul.sf-menu li.sfHover').length == 0) $("#HideThis").hide(); }
});
});
并且'if'语句只有在所有菜单都被折叠时才为真。
【问题讨论】: