3

jqueryに飛び込もうとしているだけで、これがすでに回答されている場合は許してください。検索しましたが、私がやろうとしていることに関連する例が見つかりませんでした。

いくつかのサブメニューを含む垂直メニューがあります。トップレベルのメニューをクリックするとサブメニューが開くように動作しています。問題は、サブメニュー項目の 1 つがクリックされたときにサブメニューを開いたままにしたいということです。今のように、サブメニュー項目をクリックするとメニューが折りたたまれます。

これが私のコードです:

// Add class of drop if item has sub-menu
$('ul.sub-menu').closest('li').addClass('drop');

// Left Sidebar Main Navigation
var menu_ul = $('.menu > li.drop > ul'),
    menu_a  = $('.menu > li.drop > a');

menu_ul.hide();

menu_a.click(function(e) {
    e.preventDefault();
    if(!$(this).hasClass('active')) {
        menu_a.removeClass('active');
        menu_ul.filter(':visible').slideUp('normal');
        $(this).addClass('active').next().stop(true,true).slideDown('normal');
    } else {
        $(this).removeClass('active');
        $(this).next().stop(true,true).slideUp('normal');
    }
});

私が望むものを明確なコーダータイプの文に翻訳しようとすると、このように読まれると思います. 基本的に、サブメニューを持つアクティブなメニューの DOM を照会する必要があります。ページにサブメニュー項目の 1 つが表示されている場合は、サブメニューのドロップダウンを表示します。

4

3 に答える 3

1

あなたには2つの選択肢があると思います。

  1. Ajax を使用してページを読み込むことを検討してください
  2. 各ページでクリック イベントをシミュレートします。

例えば:

「ポートフォリオ」項目の場合、これを追加します

<script type="text/javascript">
  $(document).ready(function(){
      jQuery('#menu-item-38>a').trigger('click');
  });
</script>

「私たちについて」について:

<script type="text/javascript">
  $(document).ready(function(){
      jQuery('#menu-item-180>a').trigger('click');
  });
</script>
于 2012-08-10T18:12:59.937 に答える
0

この行を削除するのはどうですか

menu_ul.filter(':visible').slideUp('normal');

非アクティブなメニューを非表示にするのを防ぎます。

試してみて、私たちに知らせてください。

于 2012-08-10T19:19:48.257 に答える