jQuery使用哈希为li href添加一个类?

时间:2014-01-22 20:23:46

标签: jquery css

我正在尝试编写一些jQuery来检查我的无序列表中的链接是否是正在查看的当前页面,然后向该列表项添加一个“当前”类。

这是我目前使用的代码:

$(document).ready(function() {
    //<![CDATA[
    jQuery(function() {
      jQuery('.sidebar li').each(function() {
        var href = jQuery(this).find('a').attr('href');
        if (href === window.location.pathname) {
          jQuery(this).addClass('current');
        }
      });
    });  
    //]]>
});

这在一定程度上有效,但由于我的侧边栏中的所有链接都是哈希值,因此它总是在第一个li上设置当前类。例如,这是我的链接的样子:

<ul>
    <li><a href="/posts#page1" />Table of Contents</a></li>
    <li><a href="/posts#page10" />Chapter 1</a></li>
    <li><a href="/posts#page25" />Chapter 2</a></li>
</ul>

在此示例中,即使您位于不同的页面上,当前类也仅应用于“目录”li。

有可能以这种方式完成我正在尝试的事情吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

只需将location.hash附加到路径名即可。如果没有,它将为空,因此对于没有链接的链接,它将以这种方式工作。

if (href === window.location.pathname + window.location.hash) {