我正在使用twitter bootstrap并尝试在选择列表项时使用jquery将“active”类设置为导航列表项。
以下是我的代码
<ul class="nav nav-pills pull-right">
<li id="home"><a href="/">Home</a></li>
<li id="gadget"><a href="/category/gadgets"><span>Gadgets + Geeky</span></a></li>
<li id="toys"><a href="/category/toys"><span>Toys</span></a></li>
<li id="wearables"><a href="/category/wearables"><span>Wearables</span></a></li>
<li id="home_office"><a href="/category/home-office"><span>Home + Office</span></a></li>
<li id="food_drinks"><a href="/category/food-drinks"><span>Food + Drinks</span></a></li>
<li id="kids"><a href="/category/kids"><span>Kids Stuff</span></a></li>
</ul>
<script>
$( document ).ready(function() {
$('ul li').click(function() {
// remove classes from all
$('li').removeClass('active');
// add class to the one we clicked
$(this).addClass("active");
});
});
</script>
但是当我点击一个列表项时,导航项上的临时活动类被设置,但页面正在刷新并显示当前点击的列表项而没有活动类。
我已按照Toggle active class in nav bar with JQuery中提到的说明操作 没有成功。
有人可以指出我错过了什么。
由于
答案 0 :(得分:1)
此脚本在重定向发生后运行,因此这应该适合您。我们正在添加一个虚拟课程&#39; activeLink&#39;到活动链接并根据该活动链接选择列表。
$(function(){
$('ul li a').removeClass('activeLink');
var url = window.location.pathname,
// create regexp to match current url pathname also to match the home link
urlRegExp = new RegExp(url == '/' ? window.location.origin + '/?$' : url.replace(/\/$/,''));
// now grab every link from the navigation
$('.ul li a').each(function(){
// and test its normalized href against the url pathname regexp
if(urlRegExp.test(this.href.replace(/\/$/,''))){
$(this).addClass('activeLink');
}
});
$('li').removeClass('active');
$('a.activeLink').closest('li').addClass('active');
})