简体   繁体   English

jQuery:如何记下side-nav的click-tab并在新页面加载时使其变为彩色(活动)?

[英]jQuery: How can I remember clicked-tab of side-nav and make it colored(active) when newly page loaded?

Part of HTML code of side-nav: side-nav的HTML代码的一部分:

<div class="side-nav margin-bottom-60">
    <div class="side-nav-head">
        <button class="fa fa-bars"></button>
        <h4>CATEGORIES</h4>
    </div>

    <ul class="list-group list-group-bordered list-group-noicon uppercase">
        <li class="list-group-item active">
            <a class="dropdown-toggle" href="#">WOMEN</a>
            <ul>
                <li><a href="#"><span class="size-11 text-muted pull-right">(123)</span> Shoes &amp; Boots</a></li>
                <li class="active"><a href="#"><span class="size-11 text-muted pull-right">(331)</span> Top &amp; Blouses</a></li>
                <li><a href="#"><span class="size-11 text-muted pull-right">(234)</span> Dresses &amp; Skirts</a></li>
            </ul>
        </li>
        <li class="list-group-item">
            <a class="dropdown-toggle" href="#">MEN</a>
            <ul>
                <li><a href="#"><span class="size-11 text-muted pull-right">(88)</span> Accessories</a></li>
                <li><a href="#"><span class="size-11 text-muted pull-right">(67)</span> Shoes &amp; Boots</a></li>
                <li><a href="#"><span class="size-11 text-muted pull-right">(32)</span> Dresses &amp; Skirts</a></li>
                <li class="active"><a href="#"><span class="size-11 text-muted pull-right">(78)</span> Top &amp; Blouses</a></li>
            </ul>
        </li>
    </ul>
</div>

and it looks like this: 它看起来像这样:

在此处输入图片说明

What I want to do is : 我想做的是:

  1. Click 'DRESSES & SKIRTS' 点击“连衣裙和裙子”
  2. 'DRESSES & SKIRTS' page loaded 已加载“裙子和裙子”页面
  3. 'DRESSES & SKIRTS' words getting green & 'TOP & BLOUSES' words getting black. “连衣裙和裙子”字样变绿色,“顶部和衬衫”字样变黑。

To do this, I think that it need storage thing which could save click events or tab states so that even after new page is loaded, it can change color of categories. 为此,我认为它需要可以保存单击事件或选项卡状态的存储内容,以便即使在加载新页面后也可以更改类别的颜色。

And also wonder whether it should happen in front-side or not. 并且也想知道它是否应该发生在正面。

Even have no idea how to search in google. 甚至不知道如何在Google中搜索。

Any ideas? 有任何想法吗?

There are so many ways to achieve this, one is: 实现这一目标的方法有很多,一种是:

Put a hidden element in each page that contains the a page identification value like: 在每个包含页面标识值的页面中放置一个隐藏元素,例如:

<input class="identification" value="boys_section" />
<input class="identification" value="girl_section" />
...

And on your layout put a check like: 并在您的布局上放一张类似的支票:

var identity =  $('.identification').val();
if(identity == 'boys_section')
{
    // set the css to change the color of the matching <li>
}

A very elegant way that supports N levels. 支持N级的一种非常优雅的方式。

On mouse down we remove the all the active list elements. 在鼠标按下时,我们删除所有活动列表元素。

On click of a list element, we add the active class, as the nesting element will also receive the event, it will also be marked as active and so on. 在单击列表元素时,我们添加了活动类,因为嵌套元素还将接收事件,它也将被标记为活动等。

You can mix that with the other answer and fill the hidden input with the element id, on page load you will just have to simulate the click on the targeted element: 您可以将其与其他答案混合,并在隐藏的输入中填充元素ID,在页面加载时,您只需模拟对目标元素的点击即可:

$('#' + paramFromQuery).click();

 $('li').click(function(event){ $(this).addClass('active'); }); $('li').mousedown(function(event){ $('li.active').removeClass('active'); }); function getParameterByName(name, url) { if (!url) { url = window.location.href; } name = name.replace(/[\\[\\]]/g, "\\\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\\+/g, " ")); } var selected = getParameterByName('selected'); if(selected){ console.log(selected); $('.' + selected).trigger("click"); }else{ // simulation for demo on first load selected = "list-1-2"; $('.' + selected).trigger("click"); } 
 li.active > a{ color: lime; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="side-nav margin-bottom-60"> <div class="side-nav-head"> <button class="fa fa-bars"></button> <h4>CATEGORIES</h4> </div> <ul class="list-group list-group-bordered list-group-noicon uppercase"> <li class="list-group-item list-1"> <a class="dropdown-toggle" href="#?selected=list-1">WOMEN</a> <ul> <li class="list-1-1"><a href="#?selected=list-1-1"><span class="size-11 text-muted pull-right">(123)</span> Shoes &amp; Boots</a></li> <li class="list-1-2"><a href="#?selected=list-1-2"><span class="size-11 text-muted pull-right">(331)</span> Top &amp; Blouses</a></li> <li class="list-1-3"><a href="#?selected=list-1-3"><span class="size-11 text-muted pull-right">(234)</span> Dresses &amp; Skirts</a></li> </ul> </li> <li class="list-group-item list-2"> <a class="dropdown-toggle" href="#?selected=2">MEN</a> <ul> <li class="list-2-1"><a href="#?selected=list-2-1"><span class="size-11 text-muted pull-right">(88)</span> Accessories</a></li> <li class="list-2-2"><a href="#?selected=list-2-2"><span class="size-11 text-muted pull-right">(67)</span> Shoes &amp; Boots</a></li> <li class="list-2-3"><a href="#?selected=list-2-3"><span class="size-11 text-muted pull-right">(32)</span> Dresses &amp; Skirts</a></li> <li class="list-2-4"><a href="#?selected=list-2-4"><span class="size-11 text-muted pull-right">(78)</span> Top &amp; Blouses</a></li> </ul> </li> </ul> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM