0

我在突出显示子类别中的选项卡时遇到了困难。第一段代码是一个单一的选项卡,其中class='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 的...见第三个示例代码。

<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');

参考

。孩子们()

.closest()

于 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 回答