0

这是上一个问题的后续。我想要实现的是在单击将呈现新页面的锚标记后向 li 元素添加一个类。所以我知道当页面重新加载时,新的 HTML 被加载,我的 addclass 方法将被遗忘。

所以我一直在研究这个,似乎还有办法用 jquery 做到这一点?希望有人可以澄清或让我知道以下内容有什么问题

所以这就是我所拥有的......

导航栏

 <ul id="main-menu" class="clearfix sf-js-enabled sf-arrows">
        <li>
            <a href="/"><i class="icon-home"></i> Home</a>
        </li>

        <li>
            <a href="/pages/aboutme"><i class="icon-desktop"></i> About Me</a>
        </li>

        <li>
            <a href="/pages/portfolio"><i class="icon-picture"></i>  Portfolio</a>
        </li>

        <li>
            <a href="/blog"><i class="icon-comments"></i> Blog</a>
        </li>

        <li>
            <a href="/contact"><i class="icon-envelope"></i> Contact</a>
        </li>
      </ul>

jQuery

$('#main-menu li').each(function() {
  var href = $(this).find('a').attr('href');
  if (href === window.location.pathname) {
    $(this).addClass('current-menu-item');
  }
});

虽然这不起作用。谁能解释一下为什么?或者在代码中看到错误,我最初的想法是我需要找到最接近当前 li 的 a 吗?

任何帮助表示赞赏

谢谢

4

2 回答 2

2

只需在 href 变量后放置 1 行。

console.log(href)

你会很容易理解那里出了什么问题。您需要在控制台中看到这一点。如果您对此一无所知,请使用以下内容。

alert(href)
于 2013-07-19T12:50:38.280 回答
0

那么如果你从一个标签中获取href,也许你也应该从页面中获取href?if (href === window.location.href)无论如何,我很确定问题出在 if 条件下。

于 2013-07-19T12:52:26.833 回答