我有一个菜单:http://jsfiddle.net/hu5x3hL1/3/
HTML 的
<ul id="menu" class="sidebar">
<li> <a href="#" class="clickme">Menu</a>
<ul id="menu1">
<li><a class="dropdown-class-name" href="#">Dropdown link1</a></li>
<li><a class="dropdown-class-name" href="#">Dropdown link2</a></li>
</ul>
</li>
的jQuery
$('#menu1 li a').click(function(e) {
$('a').removeClass('dropdown-class-name active');
$(this).addClass('dropdown-class-name active');
});
CSS
#menu1 li a.active{
font-weight:bold;
}
活动菜单项以粗体突出显示。但是当我点击某个下拉链接时,在我的网站上,新页面打开,但活动菜单项已经不是粗体。如何在网站的新页面上以粗体突出显示?
我试过这样做:
$("#menu1 li a").click(function () {
var url = window.location.href;
if (url == (this.href)) {
$('a').removeClass('dropdown-class-name active');
$(this).addClass('dropdown-class-name active');
}
});
但是this.href
会返回undefined
,实际上如果我使用的是某个链接而不是this.href
,则此代码的工作方式也不正确。
答案 0 :(得分:1)
您必须在dom ready处理程序中进行检查,而不是在单击处理程序
中$('#menu1 li a').click(function (e) {
$('a').removeClass('dropdown-class-name active');
$(this).addClass('dropdown-class-name active');
});
var url = window.location.pathname;//need to make sure that this is the href value
$('#menu1 li a[href="'+url+'"]').addClass('dropdown-class-name active');
答案 1 :(得分:0)
试试这个
$('#menu1 li a').click(function(e) {
if($('a').hasClass('dropdown-class-name active')=="false"){$('a').removeClass('dropdown-class-name active');}
$(this).addClass('dropdown-class-name active');
});
答案 2 :(得分:0)
你是否尝试将锚引用放在选择器中?
var localURL = '[href="'+window.location.href+'"]'
$('#menu1 li a'+localURL).click(function(e) {
$('a').removeClass('dropdown-class-name active');
$(this).addClass('dropdown-class-name active');
});
http://jsfiddle.net/hnxhcbgw/1/
请记住,这只会在点击事件上运行,您也应该在加载事件中执行此操作。
答案 3 :(得分:0)
以下代码应该可以使用
$("#menu1 li a").click(function() {
var $Link = $(this); // cache it as we will use ot mote than once
//also url == a.href cannot return true if you use relative url in the link.
//url most likely http://domain.com/pagename href will be just a page name
//if active do nothing
if (!$Link.hasClass("active")) {
$Link.closest("ul") //find menu container
.find("a.active").removeClass('active'); //find active and remove it
$Link.addClass('active');
}
});