0

わかりました、皆さん、

使用しなければならない CMS の Jquery を使用してアコーディオン メニューを作成する際に問題が発生しています。この古い CMS は、a や li ではなく、span タグで「アクティブな」アイテム クラスを割り当てます。すでに持っているようなliアンカータグではなく、スパンタグをアクティブにするコードを介してアクティブなタブを設定できる必要があります。例を次に示します。

        <script type="text/javascript">
        $(document).ready(function () {
          $('#amenu > li > a').click(function(){
            if ($(this).attr('class') != 'active'){
              $('#amenu li ul').slideUp();
              $(this).next().slideToggle();
              $('#amenu li a').removeClass('active');
              $(this).addClass('active');
            }
          });
        });
    </script>

CMS からの出力例は次のとおりです。

<ul id="amenu">
    <li><a href="#">Home</a></li><li><span class="currentbranch0">
        <a href="">Content</a></span>
        <ul class="multilevel-linkul-0" title="">
            <li><a href="">Content 2</a></li>
            <li><span class="currentbranch1"><a href="">Content 3</a></span></li>
        </ul>
    </li>
</ul>

誰もが知っているこの問題に取り組むにはどうすればよいでしょうか? さまざまな組み合わせがありますが、アンカー リンクを壊し続けています。また、アンカー アクティブ クラスをページに手動で設定すると、CMS を使用するため、アコーディオンは子を展開しませんが、これはそれほど大きな問題ではないかもしれません。

どんな助けでもいただければ幸いです

よろしく

ニック

4

1 に答える 1

0

.closest('span')クラスを参照しているコード内の場所に追加するだけですactive:

    $(document).ready(function () {
      $('#amenu > li > a').click(function(){
        if ($(this).closest('span').attr('class') != 'active'){
          $('#amenu li ul').slideUp();
          $(this).next().slideToggle();
          $('#amenu li a').closest('span').removeClass('active');
          $(this).closest('span').addClass('active');
        }
      });
    });
于 2013-02-24T17:05:01.530 に答える