【问题标题】:Setting an active menu item current URL with jQuery使用 jQuery 设置活动菜单项当前 URL
【发布时间】:2018-10-10 08:45:19
【问题描述】:

我正在尝试将活动类添加到当前菜单项。到目前为止,我的 HTML 如下所示:

<ul id="navmenu" class="navigation">
<li >
    <a href="#"> Home</a>
</li>
<li class="sub_navmenu">
    <a href="#">About me</a>
    <ul>
        <li>
            <a href="#">Item 1</a>
        </li>
        <li>
            <a href="#">Item 1</a>
        </li>
        <li>
            <a href="#">Item 1</a>
        </li>
    </ul>
    </li>
  <ul>

最好在项目 1 和父 li 元素(即 sub_navmenu)上启用活动类。 我的 jQuery 是这样的:

$(function () {
setNavigacija();
   });

  function setNavigacija() {
  var path = window.location.pathname;
  path = path.replace(/\/$/, "");
   path = decodeURIComponent(path);

  $("#navmenu li a").each(function () {
    var href = $(this).attr('href');
    if (path.substring(0, href.length) === href) {
        $(this).closest('li').addClass('active');
    }
   });
 }

小提琴链接https://jsfiddle.net/41uLs8md/12/

【问题讨论】:

  • 我将使用链接重定向到另一个页面,是的。

标签: javascript jquery html


【解决方案1】:

您的if (path.substring(0, href.length) === href) { 似乎有问题

你可以试试这个链接。

$(function () {
    setNavigacija();
});

function setNavigacija() {
    var path = window.location.href;
    path = path.replace(/\/$/, "");
    path = decodeURIComponent(path);
    $("#navmenu li a").each(function () {
        var href = $(this).attr('href');
        if (path.indexOf(href) != -1) {
            $(this).closest('li').addClass('active');
        }
    });
}

【讨论】:

    【解决方案2】:

    $(function () {
        setNavigacija();
    });
    
    function setNavigacija() {
        var path = window.location.pathname;
        path = path.replace(/\/$/, "");
        path = decodeURIComponent(path);
     //$(".sub_navmenu ul li a").addClass('active');
        $("#navmenu li a").each(function () {
            var href = $(this).attr('href');
            if (path.substring(0, href.length) === href) {
                $(this).closest('li').addClass('active');
            }
        });
         $(".sub_navmenu ul li").click(function(){
              $(this).find('a').toggleClass('active');
         });
    }
    .navigation {
      list-style-type: none;
      
    }
    .sub_navmenu > ul {
       list-style-type: none;
    }
    .active {
      
      color:red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <ul id="navmenu" class="navigation">
        <li >
            <a href="#"> Home</a>
        </li>
        <li class="sub_navmenu">
            <a href="#">About me</a>
            <ul>
                <li>
                    <a href="#">Item 1</a>
                </li>
                <li>
                    <a href="#">Item 1</a>
                </li>
                <li>
                    <a href="#">Item 1</a>
                </li>
            </ul>
        </li>
     <ul>

    这是你期望做的吗?

    【讨论】:

    • 您好,谢谢您的代码,类似的东西,如果您知道我的意思,如果我单击该链接,我正在尝试使 About me 具有活动课程和项目 1。此外,当我点击主页链接时,它也必须有活动课程。
    • 哦!当用户单击时,您希望在a 上添加活动类。我对吗?我更新了答案请检查。
    • 现在好多了,当我点击主页链接时,上面没有活动类,在你上面的例子中?
    • 我为sub_navmenu 添加了点击事件。如果需要,您可以将其添加到navmenu
    • 我添加了导航菜单点击事件,但主页链接仍然没有活动类?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多