如果</li> <li>标记包含任何活动类,则将活动类添加到最接近的<li>

时间:2017-10-28 17:30:00

标签: javascript jquery html

这是我的代码。

<div class="support-menu hidden-xs">
<nav class="vertical">
    <ul>
        <li>
            <a href="#" class="active">Basic SQL</a>
            <div>
                <ul>
                    <li><a class="Database_Basic" target="_self" href="~/Database/Basic">Overview</a></li>
                    <li><a class="Database_SQLSyntax" target="_self" href="~/Database/SQLSyntax">SQL Syntax</a></li>
                    <li><a class="Database_Select" target="_self" href="~/Database/Select">SELECT</a></li>
                </ul>
            </div>
            <a href="#" class="">SQL Function</a>
            <div>
                <ul>
                    <li><a class="Database_AVG" target="_self" href="~/Database/AVG">AVG</a></li>
                    <li><a class="Database_COUNT" target="_self" href="~/Database/COUNT">COUNT</a></li>
                    <li><a class="Database_MIN" target="_self" href="~/Database/MIN">MIN</a></li>
                </ul>
            </div>
        </li>

    </ul>
</nav>

以下是基于URL在li标签上添加活动的脚本。

<script>
 var index = window.location.pathname.split('/')[1] + '_' + 
window.location.pathname.split('/')[2];
$('ul.li.a').removeClass('active');
$('a.' + index).addClass('active');
 </script>

所以我想要的是当li标签有活动类时,还要在parent a(anchor)标签上添加活动类

2 个答案:

答案 0 :(得分:0)

以下jQuery行应该这样做:

$('a.' + index).closest('div').prev().addClass('active');

使用nearest(),它会搜索具有标记名DIV的所有父项,并选择离您最近的一个元素。 使用.prev(),您可以选择DIV上方的元素,在本例中为A元素。

答案 1 :(得分:0)

我没有测试过您的代码,因为您说这样做比在脚本标记中添加以下代码更好。

$('a.' + index).closest('div').siblings().removeClass('active');
$('a.' + index).closest('div').prev('a').addClass('active');

如果要跳过重复这些选择器,请将这些选择器分配给变量。