[英]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.