简体   繁体   English

页面加载菜单栏上的javascript活动类

[英]javascript active class on page load menu bar

I have build a admin panel using Laravel ..Where I have side bar having multiple menus.. The problem I'm facing is whenever i click on one of the menu's I want to active that class But it couldn't keep that active. 我已经使用Laravel建立了一个管理面板..我的侧边栏有多个菜单..我面临的问题是,每当我单击菜单之一时,我就想激活该类,但它不能保持该激活状态。

Here is the code of my sidebar 这是我的侧边栏代码

<div id="sidebar">   
    <ul>
        <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Members</span></a>
            <ul>
              <li class="submenu-2"><a href="{{asset('member/create')}}">Create Member</a></li>          
              <li class="submenu-2"><a href="{{asset('member')}}">Member List</a></li>               
            </ul>
        </li>
        <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Payroll</span></a>
            <ul>
                    <li class="submenu-2"><a href="{{asset('payroll/create')}}">Create Monthly Payroll</a></li>               
                    <li class="submenu-2"><a href="{{asset('managerPayroll')}}">Unapproved Monthly Payroll (Management)</a></li>                           
                    <li class="submenu-2"><a href="{{asset('nonManagerPayroll')}}">Unapproved Monthly Payroll (Employee)</a></li>
                    <li class="submenu-2"><a href="{{asset('printEmployeeAccount')}}">Print Employee Account</a></li>                     
            </ul>
        </li>
        <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Report</span></a>
            <ul>
                    <li class="submenu-2"><a href="{{asset('serachManagerReport')}}">Search Manager Report</a></li> 
                    <li class="submenu-2"><a href="{{asset('serachNonManagerReport')}}">Search Employee Report</a></li>
                    <li class="submenu-2"><a href="{{asset('salaryReport')}}">Salary Sheet </a></li> 
            </ul>
        </li>
        <li class="submenu-2"> <a href="{{asset('changePassword')}}"><i class="icon icon-list"></i> <span>Password Update</span></a>
        </li>
    </ul>

</div> 

And the javascript I've used to make the url as active. 还有我用来使网址变为活动状态的JavaScript。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>         
<script>
    (function() {
    var nav = document.getElementById('sidebar'),
        anchor = nav.getElementsByTagName('a'),
        current = window.location.pathname.split('/')[1];
        for (var i = 0; i < anchor.length; i++) {
        if(anchor[i].href == current) {
            anchor[i].className = "active";
        }
    }
})();
</script>

Can anyone suggest what's the Error here please? 有人可以在这里提出什么错误吗?

You can do this in an easy way : Add @yield in every menu in following way: 您可以通过一种简单的方式执行此操作:通过以下方式在每个菜单中添加@yield:

<li class="@yield('menu_create_member') submenu-2"><a href="{{asset('member/create')}}">Create Member</a></li>

For Main menu and sub menu try this : 对于主菜单和子菜单,请尝试以下操作:

<li class="@yield('menu_member') submenu"> <a href="#"><i class="icon icon-list"></i> <span>Members</span></a>
  <ul>
   <li class="@yield('menu_create_member') submenu-2"><a href="{{asset('member/create')}}">Create Member</a></li>                        
   </ul>
 </li>

Then add this in every page after extending master template (@extends('layouts.master')) when you load 然后,在加载时扩展主模板(@extends('layouts.master'))之后,将其添加到每个页面中

@section('menu_member','active')  // For main menu


@section('menu_create_member','active') // For sub menu

And then automatically active current menu 然后自动激活当前菜单

Like this.use $ .To load jquery.Or you can also use $(document).ready(function(){}); 像this.use $ 。为了负载jquery.Or你也可以使用$(document).ready(function(){});

 $(function() { var nav = document.getElementById('sidebar'), anchor = nav.getElementsByTagName('a'), current = window.location.pathname.split('/')[1]; for (var i = 0; i < anchor.length; i++) { if(anchor[i].href == current) { anchor[i].className = "active"; } } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="sidebar"> <ul> <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Members</span></a> <ul> <li class="submenu-2"><a href="{{asset('member/create')}}">Create Member</a></li> <li class="submenu-2"><a href="{{asset('member')}}">Member List</a></li> </ul> </li> <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Payroll</span></a> <ul> <li class="submenu-2"><a href="{{asset('payroll/create')}}">Create Monthly Payroll</a></li> <li class="submenu-2"><a href="{{asset('managerPayroll')}}">Unapproved Monthly Payroll (Management)</a></li> <li class="submenu-2"><a href="{{asset('nonManagerPayroll')}}">Unapproved Monthly Payroll (Employee)</a></li> <li class="submenu-2"><a href="{{asset('printEmployeeAccount')}}">Print Employee Account</a></li> </ul> </li> <li class="submenu"> <a href="#"><i class="icon icon-list"></i> <span>Report</span></a> <ul> <li class="submenu-2"><a href="{{asset('serachManagerReport')}}">Search Manager Report</a></li> <li class="submenu-2"><a href="{{asset('serachNonManagerReport')}}">Search Employee Report</a></li> <li class="submenu-2"><a href="{{asset('salaryReport')}}">Salary Sheet </a></li> </ul> </li> <li class="submenu-2"> <a href="{{asset('changePassword')}}"><i class="icon icon-list"></i> <span>Password Update</span></a> </li> </ul> </div> 

By wrapping your code inside parentheses you are not calling the function inside. 通过将代码包装在括号内,您不会在其中调用该函数。

(function() {
    var nav = document.getElementById('sidebar'),
        anchor = nav.getElementsByTagName('a'),
        current = window.location.pathname.split('/')[1];

    for (var i = 0; i < anchor.length; i++) {
        if(anchor[i].href == current) {
            anchor[i].className = "active";
            break;
        }
    }
}) (); // Add 2 parentheses to call the anonymous function

PS. PS。 I also added a break inside the for loop, since i guess you only need to make one link active per page 我还为for循环添加了一个中断,因为我猜您只需要使每页一个链接处于活动状态

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

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