[英]Change active navbar link when using JQUERY Load
I have a navigation bar which is being loaded into each of my pages using a JQUERY '.load' 我有一个导航栏,正在使用JQUERY'.load'将其导航到每个页面中
However, the active link will be different for each page. 但是,每个页面的活动链接都不同。 Is there a way i can override the active link from the page that has loaded the Navbar?
有没有办法可以从已加载导航栏的页面覆盖活动链接?
Any help would be much appreciated :) 任何帮助将非常感激 :)
Below is an example of the Navbar links 以下是导航栏链接的示例
<nav class="navbar navbar-toggleable-sm">
<button type="button" data-toggle="collapse" data-target="#mai-navbar-collapse" aria-controls="#mai-navbar-collapse" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler hidden-md-up collapsed">
<div class="icon-bar"><span></span><span></span><span></span></div>
</button>
<div id="mai-navbar-collapse" class="navbar-collapse collapse mai-nav-tabs">
<ul class="nav navbar-nav">
<li class="nav-item parent open"><a href="#" role="button" aria-expanded="true" class="nav-link"><span class="icon s7-home"></span><span>Training</span></a>
<ul class="mai-nav-tabs-sub mai-sub-nav nav">
<li class="nav-item"><a href="/teams/Training/sitepages/training/writtenguides.aspx" id="12222" class="nav-link active"><span class="icon s7-monitor"></span><span class="name">Written Guides</span></a></li>
<li class="nav-item"><a href="/teams/Training/sitepages/training/videoguides.aspx" class="nav-link"><span class="icon s7-video"></span><span class="name">Video Guides</span></a></li>
</ul>
</li>
<li class="nav-item parent"><a href="#" role="button" aria-expanded="false" class="nav-link"><span class="icon s7-users"></span><span>Support</span></a>
<ul class="mai-nav-tabs-sub mai-sub-nav nav">
<li class="nav-item"><a href="/teams/Training/sitepages/support/signup.aspx" class="nav-link"><span class="icon s7-id"></span><span class="name">Signing Up</span></a></li>
<li class="nav-item"><a href="/teams/Training/sitepages/support/faqs.aspx" class="nav-link"><span class="icon s7-search"></span><span class="name">FAQS</span></a></li>
</ul>
</li>
</ul>
</div>
</nav>
JQUERY JQUERY
<script>
$(function(){
$("#nav-placeholder").load("../../navbarL1.aspx");
$('.dropdown-toggle').dropdown()
});
</script>
Try to run this code. 尝试运行此代码。 I hope it will work.
我希望它能起作用。
function getURL() { // get the whole URL var currentURL = window.location.href; // get the file name after = sign var activeTemplate = currentURL.substr(currentURL.indexOf("=") + 1); // add active class to url $('a[href="/teams/Training/sitepages/training/'+ activeTemplate +'"]').addClass('active'); })
You can use .toggleClass()
with a toggle state value as the second param. 您可以将
.toggleClass()
与切换状态值一起用作第二个参数。 At that point it's a matter of figuring out how to compare the href
with the current URL. 此时,需要弄清楚如何将
href
与当前URL进行比较。 You can use location.pathname
, but you may want to get the href
using getAttribute
so it doesn't include the hostname. 您可以使用
location.pathname
,但是您可能希望使用getAttribute
获取href
因此它不包含主机名。 Otherwise you could also use this.href === location.href
. 否则,您也可以使用
this.href === location.href
。 It is important, however, to include this code in a callback to .load()
so you don't encounter a race condition. 但是,将此代码包含在
.load()
的回调中非常重要,这样您就不会遇到争用条件。
$(function(){
$("#nav-placeholder").load("../../navbarL1.aspx", function(){
$('.mai-sub-nav li a').each(function(){
$(this).toggleClass('active', this.getAttribute('href') === location.pathname);
})
});
$('.dropdown-toggle').dropdown()
});
You have to follow this kind of technique to achieve that 您必须遵循这种技术才能实现
Here is my nav bar 这是我的导航栏
<ul class="nav navbar-nav">
<li class="active" data-pos="1">
<a href="{{ route('public.site') }}">Home</a>
</li>
<li data-pos="2">
<a href="{{ route('site.page',['about']) }}">About Egypt</a>
</li>
<li data-pos="3">
<a href="{{ route('site.accomodation') }}">Accomodation</a>
</li>
<li data-pos="4">
<a href="{{ route('site.nile_curises') }}">Nile Cruises</a>
`enter code here`
</li>
<li data-pos="5">
<a href="{{ route('site.tour_packages') }}">Tour Packages</a>
</li>
<li class="dropdown" data-pos="6">
<a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true">FAQ</span>
</a>
<ul class="dropdown-menu">
<li><a href="{{ route('site.page',['thing-to-do']) }}">Thing to do</a></li>
<li><a href="{{ route('site.page',['travel-tip']) }}">How to travel</a</li>
<li><a href="{{ route('site.page',['travel-help']) }}">Travel Help</a></li>
</ul>
</li>
</ul>
Here is my script logic in which i get full url and spilt on the base of '/' seprator to get an array and check second last and last segment 这是我的脚本逻辑,其中我获得完整的URL,并在'/'分隔符的基础上溢出以获取数组并检查倒数第二个和最后一个段
var url = window.location.href;
var urlArray = url.split("/");
var lastUrlString = urlArray[urlArray.length-1];
var pageName = urlArray[urlArray.length-2];
After getting last and second last segment i loop through navbar li elements and add or remove class on the basis of page names 在获取最后一个和倒数第二个段之后,我遍历了导航栏li元素,并根据页面名称添加或删除了类
var navLinks = $('ul.nav li');
navLinks.each(function(index,element){
var position = $(element).data('pos');
if(lastUrlString == 'home')
{
if($(element).data("pos") == 1)
{
if(!$(element).hasClass("active") )
{
$(element).addClass('active');
}
}
else
{
$(element).removeClass("active");
}
}
else if(lastUrlString == 'about')
{
if($(element).data("pos") == 2)
{
if(!$(element).hasClass("active") )
{
$(element).addClass('active');
}
}
else
{
$(element).removeClass("active");
}
}
else if(lastUrlString == 'page' && pageName == 'accomodation')
{
if($(element).data("pos") == 3)
{
if(!$(element).hasClass("active") )
{
$(element).addClass('active');
}
}
else
{
$(element).removeClass("active");
}
}
else if(lastUrlString == 'page' && pageName == 'nile_curises')
{
if($(element).data("pos") == 4)
{
if(!$(element).hasClass("active") )
{
$(element).addClass('active');
}
}
else
{
$(element).removeClass("active");
}
}
else if(lastUrlString == 'page' && pageName == 'tour_packages')
{
if($(element).data("pos") == 5)
{
if(!$(element).hasClass("active") )
{
$(element).addClass('active');
}
}
else
{
$(element).removeClass("active");
}
}
else
{
$(element).removeClass("active");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.