如何根据位置和 li 元素列表设置 Jquery 变量?

How would I set a Jquery variable based on the location and a list of li elements?

我正在使用 JQuery 1.11。我有以下 HTML …

<div id="tabs">
<ul class="nav">
  <li><a href=“/my_object/index”>My Objects</a></li>
  <li><a href="/my_object/search">Lookup Results</a></li>
    …
  <li><a href="/my_object/edit”>Edit Stuff</a></li>
</ul>
</div>

如果锚标记的 href 属性与当前位置匹配,我将如何设置变量“activeIndex”作为锚标记的索引?因此,例如,如果当前位置是“https://mydomein.com/my_object/search”,则 activeIndex 变量将为“1”。

你可以使用 window.location.pathname:

function activeIndex() {
    var ul = document.getElementsByClassName("nav");
    var listItems = ul[0].getElementsByTagName("li");
    for (var i = 0; i < listItems.length; i++) {
        var a = listItems[i].getElementsByTagName("a");
        if (a[0].getAttribute("href") === window.location.pathname)
            return i;
    }
    return -1;
}

您可以使用 index 方法确定 jquery 个元素数组中元素的索引。

var activeIndex;
$('ul.nav li a').each(function()
{
  if($(this).attr('href') == window.location.pathname)
     activeIndex = $('ul.nav li a').index(this);
});

示例:https://jsfiddle.net/DinoMyte/jmLynLsg/4/