导航/子窗口列表,重新加载页面后如何给出单击的项目活动类 [英] Nav/Subnav list, how to give clicked item active class after reload of page

查看:74
本文介绍了导航/子窗口列表,重新加载页面后如何给出单击的项目活动类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个嵌套&隐藏的子导航列表

I have a couple nested & hidden sub-nav lists

<ul class="nav">
<li><a href="index.html">Home</a></li>
<li><a class="profile" href="#">Profile</a>
    <ul id="profile">
        <li><a href="company.html">Company</a></li>
        <li><a href="structure.html">Structure</a></li>
        <li><a href="team.html">Team</a></li>
    </ul>
</li>

<li><a class="projects" href="#">Projects</a>
    <ul id="projects">
        <li><a href="chapter.html">Chapter</a></li>
        <li><a href="pblc-trde.html">Pblc Trde</a></li>
        <li><a href="globe.html">Globe</a></li>
        <li><a href="komforte.html">Komforte</a></li>
    </ul>
</li>    

我目前正在使用一些jQuery我在网上找到了点击后显示/隐藏子导航的内容。我想要完成的是:

I am currently using some jQuery i found online to show/hide the sub-nav upon click. What I am trying to accomplish is:


  1. 希望清理sub-nab菜单的显示/隐藏点击功能。

  1. Hopefully clean up the show/hide click function of the sub-nab menus.

当点击子导航菜单项时,打开的相应页面需要展开子导航并给出相应的菜单项活动类,以便让用户知道他们在哪个页面。

When clicking on the sub-nav menu items, the corresponding page that opens, needs to have the sub-nav expanded and give the corresponding menu item active class, so as to let the user know which page they are on.

我希望在JS / jQuery中完全这样做。该网站的安装将在WordPress中。

I am hoping to do this purely in JS/jQuery. The installation of the site will be in WordPress.

$(document).ready(function () {

$(".profile").click(function () {
    var X = $(this).attr('id');
    if (X == 1) {
        $("#profile").hide();
        $(this).attr('id', '0');
    } else {
        $("#profile").show();
        $(this).attr('id', '1');
    }

});

//Mouse click on nav
$("#profile").mouseup(function () {});


//Document Click
$(document).mouseup(function () {
    $("#profile").hide();
    $(".profile").attr('id', '');
});


$(".projects").click(function () {
    var X = $(this).attr('id');
    if (X == 1) {
        $("#projects").hide();
        $(this).attr('id', '0');
    } else {
        $("#projects").show();
        $(this).attr('id', '1');
    }

});

//Mouse click on nav
$("#projects").mouseup(function () {});

//Document Click
$(document).mouseup(function () {
    $("#projects").hide();
    $(".projects").attr('id', '');
});
});

window.onload = function () {
 $("ul#profile li:first").addClass("active");
};

 $(document).ready(function () {
  $("ul#profile").show()
});



推荐答案

$(document).ready(function()
{
    // Get the name of the page. Split the URL at the '/':s and get the last part
    // with pop():
    var pageName = (location.pathname).split('/').pop();

    // If we couldn't get a page name, default to index.html:
    if( pageName == '' )
    {
        pageName = 'index.html';
    }

    // Hide ul:s that are children of the navigation:
    $('.nav ul').hide();

    // Event handler for clicks on navigation links:
    $('.nav a').on('click', function()
    {
        // Change visibility for the first ul-child of the current li.
        // $(this) refers to the clicked element.
        $(this).parent('li').find('ul').first().toggle();

        // Hide other sub-menus:
        $(this).parents('li').siblings('li').children('ul').hide();
    });

    // Search through all link elements in the nav menu:
    $('.nav').find('a').each(function(index, value)
    {   
        // Append a '$' to the pagename to make the match()-function search
        // from the end of the href value:
        pageName += '$';

        if( value.href.match(pageName))
        {
            // If the pagename matches the href-attribute, then add the 'active'
            // class to the parent li, and show parent ul:s:
            $(this).parent('li').addClass('active').parents('ul').show();    
        }
    });
});

这篇关于导航/子窗口列表,重新加载页面后如何给出单击的项目活动类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆