javascript - 根据 url 将事件类添加到 nav li?

标签 javascript jquery html css

我很难将类 active 添加到包含站点当前页面的 li。网址 = http://polissagethibodeau.com/

这是相关的 HTML

<nav class="nav">
    <ul class="sf-menu">
        <li id="home">
            <a href="./">Home</a>
        </li>
        <li>
            <a href="./about.php">About us</a>
        </li>
        <li>
            <a href="./services.php">Services</a>
            <ul>
                <li>
                    <a href="./services.php#passenger">Car, Truck and Vans</a>
                </li>
                <li>
                    <a href="./services.php#large">Semi, Boats, RV and Busses</a>
                </li>
                <li>
                    <a href="./services.php#air">Airplanes and Helicopters</a>
                </li>
                <li>
                    <a href="./services.php#polishing">Aluminum and Plexiglass polishing</a></li>
            </ul>
        </li>
        <li>
            <a href="./photo.php">Photos</a>
        </li>
        <li>
            <a href="./contact.php">Contact Us</a>
        </li>
    </ul>
</nav>

我正在尝试应用 CSS

.sf-menu > li.active > a {
  background: #c2e078;
}

这是我尝试使用但没有成功的脚本。

$(function() {
    var path = window.location.pathname.substring(1);
    $('.nav>li>a[href="' + path + '"]').parent().addClass('active');
});

最佳答案

您可以通过两种或多种方式来完成。示例元素 来源LINK

1.----

$(function() {
     var pgurl = window.location.href.substr(window.location.href
.lastIndexOf("/")+1);
     $("nav ul a").each(function(){
          if($(this).attr("href") == pgurl || $(this).attr("href") == '' )
          $(this).addClass("active");
     })
});

2.----

如果你想使用纯 javascript,这里是代码

function setActive() {
  aObj = document.getElementById('nav').getElementsByTagName('a');
  for(i=0;i<aObj.length;i++) { 
    if(document.location.href.indexOf(aObj[i].href)>=0) {
      aObj[i].className='active';
    }
  }
}

window.onload = setActive;

3.----

function setActive() {

    $('#nav').find('a').each(function () {
        //console.log(document.location.href)
        if (document.location.href == "http://......" + $(this).attr('href')) {
            $(this).parents("ul").removeClass("hidden-ul");
            $(this).parents().addClass("active");

        }
    });


}
window.onload = setActive;

关于javascript - 根据 url 将事件类添加到 nav li?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413993/

相关文章:

ASP.NET 用户控件和 jQuery 对话框

javascript - 改变每个实例的颜色

javascript - 我们如何在 html 中通过某种不透明度使两个部分可见的同时在另一个部分之上显示一个部分?

javascript - 通过 jquery/Ajax 获取文件上传的传输速度?

javascript - 选择一个选项后动态禁用下拉菜单

javascript - 从 innerHTML 获取输入类型的名称

javascript - 用于打开 jquery-ui 对话框的指定

javascript - 如何获得正确形式的 JavaScript 和 Ruby 时间戳?

javascript - 通过不改变主体中每个元素的不透明度来显示模态

javascript - 无法使用 PHP 显示警报消息