0

子(div_toggle)を展開するために、各展開可能なUL(toggle_action)の横に[+]リンクがあるカスタムアコーディオンメニューがあります。アクティブのために

  • (表示されているページ)DOMをトラバースして、plus.gif画像をその親の横にあるminus.gifに変更しようとしています。
  • ■すでに拡張されているため。私は一日のほとんどを検索し、夢中になっています。以下は、きっとうまくいくと思った私の最新の試みです。エラーは発生しません。機能しません。

    これが私のHTMLです:

        <ul class="topnav">
          <li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>Governance</h3>
            <ul class="div_toggle">
              <li><h3><img src="/images/spacer.gif"/><a href="/governance">Governance</a></h3></li>
              <li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>Board of Directors</h3>
                <ul class="div_toggle">
                  <li><h3><img src="/images/spacer.gif"/><a href="/governance/bod" class="active">Board of Directors</a></h3></li>    
                  <li><h3><img src="/images/spacer.gif"/><a href="/governance/bod/min">Minutes</a></h3></li>
                </ul>
              </li>
              <li><img src="/images/spacer.gif"/><a href="/governance/com">Committees</a></h3></li>
            </ul>
          </li>
          <li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>About</h3>      
            <ul class="div_toggle">
              <li><h3><img src="/images/spacer.gif"/><a href="/about">About Us</a></h3></li>
              <li><h3><img src="/images/spacer.gif"/><a href="/about/contact">Contact</a></h3></li>
            </ul>
          </li>
       </ul>
    

    およびjQuery:

    $('.topnav a.active').parents().attr('src').replace('plus.gif','minus.gif');
    

    私は何が間違っているのですか?前もって感謝します!

  • 4

    2 に答える 2

    0

    HTML をネストする方法では、クラスタグ<img>の親とは見なされないため、タグを取得することはありません。active<img>

    HTML の出力方法を変更することを最も確実に検討する必要があります。

    しかし、HTMLがネストされている現在の方法で問題を解決する方法は次のとおりです。

    $(".active").parents(".div_toggle").prev("h3:first").children(":first").addClass("plus");
    
    $('h3.toggle_action img').each(function(){
        if ($(this).attr('src') && $(this).hasClass('plus') && $(this).attr('src').indexOf('plus.gif') > 0)
        {
            var imgSrc = $(this).attr('src').replace('plus.gif','minus.gif');
            $(this).attr('src', imgSrc);
        }
    });
    

    わかりました、これが何をするかというと、"active"<h3>の子を取得し、<img>呼び出されたクラスを追加し"plus"、タグをループするときにこのクラスを使用し<h3 class="toggle_action"><img>、plus をクラスとして持つ img タグを確実に取得し、他のものをマイナス.gif 画像。

    これがお役に立てば幸いです。もしそうなら、それをあなたの答えとしてマークしてください。

    于 2013-02-20T01:48:49.323 に答える
    0

    タグはimgタグの親ではなくa、兄弟です。.prev()の代わりに使用したい.parents()

    およびattrは非推奨です。使用する必要がありますprop。を使用する必要はありませreplaceん。prop('src', 'minus.gif')

    于 2013-02-20T01:24:16.883 に答える