感谢MjrKusanagi,我们用return false替换preventDefault。
还要感谢他,我们将代码重构为更小的尺寸。
<ul id="menu-top-menu">
<li>
<a href="http://stackoverflow.com">1 level</a>
<ul>
<li><a href="http://stackoverflow.com"> 2 level</a>
<ul>
<li><a href="http://stackoverflow.com">3 level</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="http://stackoverflow.com">1 level</a>
<ul>
<li><a href="http://stackoverflow.com">2 level</a></li>
</ul>
</li>
</ul>
正如您看到的正常嵌套菜单
$('#menu-top-menu li').click(function(event) {
if($(this).children('ul').is(':visible')) return true;
if($(this).children().is('a:last-child')) return true;
if($(this).siblings().is(":visible")) $(this).siblings().children("ul").hide("fast");
$(this).children('ul').toggle("slow");
return false;
代码效果很好。您可以轻松地将其实现到任何下拉菜单;) 谢谢MjrKusanagi !!!
答案 0 :(得分:1)
我认为您可以使用以下内容替换JSFiddle中的所有代码:
$('#menu-top-menu li').click(function(ev) {
if($(this).children('ul').is(':visible'))
return true;
if($(this).children('ul').toggle("slow").length)
return false;
ev.stopPropagation();
});