0

クライアントのプロジェクトを表示するためのアコーディオン メニュー構造があります。各プロジェクトには、アコーディオン内以外にも 2 つのリンクがあります。これらのリンクをクリックすると、アコーディオンはデフォルトの開いた位置である最初のプロジェクトにリセットされます。クライアントはこれを望んでいません: アクティブなプロジェクトはアコーディオンで開いたままにする必要があります。非常に論理的です。

これは構造です:

<div class="ui-accordion">
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
         <li><a class="active"></a></li>
         <li><a></a></li>
    </ul>
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
    </ul>
    <h3>clickable title for accordion items</h3>
    <ul>
         <li><a></a></li>
    </ul>
</div>

したがって、h3上記のulを含む をli含むはクラスをa.active取得し、ui-state-active他のh3ものはそのクラスを削除する必要があります。

使えることが分かった

.addClass('ui-state-active').siblings().removeClass('ui-state-active');

h3...しかし、それをターゲットにする方法がわかりませんul。どんな助けでも大歓迎です:)

4

3 に答える 3

2

「h3」を参照する各「a」に属性を追加できます。例えば:

<a data-h3="h3one"></a>

以下を参照してください。

<h3 id="h3one"></h3>

次に、jQuery を次のように開始できます。

$('a').on('click', function() {
  var h3 = $('h3[id=' + $(this).attr('data-h3') + ']');
  // etc....
于 2013-09-06T12:46:46.817 に答える
1

これを試して

$('a.active').closest('ul')
             .prev() 
             .addClass('ui-state-active')
             .siblings('h3')
             .removeClass('ui-state-active');
于 2013-09-06T12:35:47.623 に答える