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 に答える