0

サブカテゴリからタブを強調表示するのに苦労しています。この最初のコードは、タブを強調表示するための識別子としてclass='active_pat_tab'を持つ単一のタブです。クラスは、この場合はid='tabAssessDetails' のように含まれるliのIDを識別する変数を介して動的に追加されます。

<li class='tabs_item' id='tabAssessDetails'>
    <a href='#page-1' class='active_pat_tab'>
        <span>Assess Details</span>
    </a>
</li>

しかし、以下の例では、2 つのサブカテゴリを持つタブがあります。これは引き続き受信変数によって識別されますが、この場合、識別された項目は強調表示する必要があるタブのサブカテゴリです。id='tabPhysicalExamination'は要求されたタブと言えますが、動的クラスの追加は親 li の a に移動する必要があります... 3 番目のサンプル コードを参照してください。

<li class='has-sub tabs_item'>
    <a href='#page-2'><span>Observation</span></a>
    <ul>
        <li class='tabsub' id='tabCareLevel'>
            <a href='#page-17'><span>Care Level</span></a>
        </li>
        <li class='tabsub' id='tabPhysicalExamination'>
            <a href='#page-3'><span>Physical examination</span></a>
        </li>
    </ul>
</li>

それはどのように見えるべきですか:

<li class='has-sub tabs_item'>
    <a href='#page-2' class='active_pat_tab'><span>Observation</span></a>
</li>

私はいくつかのことを試しました

$( "li.tabsub" ).closest( "a" ).addClass('active_pat_tab');

$( "li.tabsub" ).parents( "li.tabs_item" ).addClass('active_pat_tab');

しかし、クラスを正しい場所に追加できませんでした。

PS: タブをクリックする必要はありません。これは、別のページから特定のタブに移動しています。この場合、クリックを使用できるとは思いません。または私は何かを逃していますか?

4

3 に答える 3

1

開始要素から、含む要素を取得し<ul>、次にその<a>前の要素を取得する必要があるため、次のようになります。

$('#' + id).closest('ul').prev('a').addClass('active_pat_tab');

'#' + id開始要素のIDを識別する変数があるとあなたが言ったので、私はそれを使用しましたid.

于 2013-09-17T15:28:44.647 に答える
0

使用する

$( "li.tabsub" ).closest("li.tabs_item").children("a").addClass('active_pat_tab');

参考文献

。子供()

.最も近い()

于 2013-09-17T15:28:28.943 に答える
0

なぜあなたはしないのですか:

$('#page2').addClass('active_pat_tab');

#page2 アンカーは ul の兄弟であるため、現在は実行されません。したがって、.closest() で選択することはできません。

また$( "li.tabsub" ).parents( "li.tabs_item" ).addClass('active_pat_tab');、そのクラスはアンカー要素ではないため、機能しません。

IDを使用せずにそれを行うことができる他の方法は次のとおりです。

$( "li.tabsub" ).closest( "li.tabs_item" ).find('a:first').addClass('active_pat_tab');
于 2013-09-17T15:29:25.710 に答える