1

我正在使用下面的代码来切换手风琴菜单,但是每次单击子菜单中的项目时,菜单都会向上滑动而不转到实际链接。

http://jsfiddle.net/Y2vM3/

在上面的 jsfiddle 中单击 MISC 时,将打开菜单。但是当单击子链接时,它会立即关闭。“return false;”时它工作正常;被删除(它的存在是为了防止浏览器跳转到页面顶部),但是有了它,子菜单就会向上滑动..?

jQuery(document).ready(function ($) {
    jQuery('.menu ul').slideUp(0);

    jQuery('.menu li.sub').click(function () {
        var target = jQuery(this).children('a');
        if(target.hasClass('menu-expanded')){
            target.removeClass('menu-expanded');
        }else{
            jQuery('.menu-item > a').removeClass('menu-expanded');
            target.addClass('menu-expanded');
        }
        jQuery(this).find('ul:first')
            .slideToggle(350)
            .end()
            .siblings('li')
            .find('ul')
            .slideUp(350);
        return false;
    });
});
4

1 回答 1

0

通过使用return false;您告诉浏览器不要点击链接。改为使用preventDefault这里有更多关于区别的信息。

http://jsfiddle.net/isherwood/Y2vM3/4/

...
        jQuery(this).find('ul:first')
            .slideToggle(350)
            .end()
            .siblings('li')
            .find('ul')
            .slideUp(350);
        preventDefault();
    });
});

另外,使用

href="javascript:void(0)"

而不是哈希。

于 2013-08-08T13:13:59.477 回答