在第二次点击后,使用下拉菜单+ prevDef禁用preventDefault() - 解释?

时间:2014-03-05 03:29:37

标签: jquery drop-down-menu preventdefault

感谢MjrKusanagi,我们用return false替换preventDefault。

还要感谢他,我们将代码重构为更小的尺寸。

HTML

<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>

正如您看到的正常嵌套菜单

的jQuery

$('#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 !!!

http://jsfiddle.net/NLKmb/20/

1 个答案:

答案 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();
});