JQuery обходится, чтобы добавить класс

0

У меня возникают трудности с отображением вкладки из подкатегории. Этот первый фрагмент кода представляет собой уникальную вкладку с классом = 'active_pat_tab' в качестве идентификатора для выделения вкладки. Класс добавляется динамически через переменную, которая идентифицирует идентификатор содержащего li в этом случае id = 'tabAssessDetails'.

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

но в приведенном ниже примере у меня есть вкладка с двумя подкатегориями. Он по-прежнему идентифицируется входящей переменной, но в этом случае идентифицированный элемент является вспомогательной категорией вкладки, которая должна быть подсвечена. id = 'tabPhysicalExamination' означает запрограммированную вкладку, но добавление динамического класса должно перейти к родительскому li a... см. третий примерный код.

<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: На вкладке нет клика. Это происходит с другой страницы на конкретную вкладку. Я не думаю, что могу использовать щелчок в этом экземпляре. или я что-то пропустил?

Теги:

3 ответа

1
Лучший ответ

Из вашего начального элемента вы хотите получить содержащее <ul>, затем элемент <a> перед ним, так что:

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

Я использовал '#' + id потому что вы сказали, что у вас есть переменная, идентифицирующая идентификатор стартового элемента, и из вопроса, который, похоже, называется id.

  • 0
    Я не знаю, смеяться мне или нет. Я знаю, что это должно быть просто сделать, но тогда это всегда такое простое решение, о котором вы не думаете. Спасибо Энтони, работает шарм.
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');
0

использование

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

Рекомендации

.дети()

.closest()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню