我正在使用一些jquery代码来突出显示我网站上当前的活动页面。它对页面很有用。但是当我将菜单链接到任何div id时,它不会突出显示。我怎样才能使它适用于id。 这是我的代码:
$(function() {
// this will get the full URL at the address bar
var url = window.location.href;
// passes on every "a" tag
$(".menu_holder a").each(function() {
// checks if its the same on the address bar
if (url == (this.href)) {
$(this).closest("li").addClass("active");
}
});
});
答案 0 :(得分:0)
我认为对于你使用的菜单
var url = window.location;
var element = $('ul.nav a').filter(function() {
return this.href == url || url.href.indexOf(this.href) == 0;
}).addClass('active').parent().parent().addClass('in').parent();
if (element.is('li')) {
element.addClass('active');
}
欢呼声!!
答案 1 :(得分:0)
这是因为window.location.href
为您提供了网页的实际绝对网址 - 例如http://stackoverflow.com/questions/38541730/highlight-active-link-on-menu#contact
。但是,很可能你的链接有一个相对的href - 基本上,this.href
可能只是#contact
。
我认为更好的解决方案是使用这样的正则表达式来获取相对url:
window.location.href.match(/#.*/) //gives you $contact"
编辑:感谢Mottie,这是一个更好的解决方案:
window.location.hash //gives you "#contact"
答案 2 :(得分:0)
根据评论,我假设您正在尝试突出显示div以及单击的菜单。
您可以使用以下代码。它将滚动div并突出显示目标div以及链接点击的菜单。
$(function() {
// this will get the full URL at the address bar
var url = window.location.href;
$(".menu_holder a").on('click',function(event) {
event.preventDefault();
var selectedDiv = $(this).attr('href');
$('html, body').animate({
scrollTop: $(selectedDiv).offset().top - 20
}, 'slow');
$(selectedDiv).addClass("active");
$(this).addClass("active");
});
});

#contact {
margin-top: 1000px;
height:50px;
width:50px;
}
.active
{
background-color : red;
color:#fff;
}

<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="menu_holder">
<a href="#">Home</a>
<a href="#contact">contact</a>
</div>
<div id="contact">
contact section
</div>
</body>
&#13;
答案 3 :(得分:0)
假设你有这个html:
<div class="Menu">
<a href="#Div1">Div 1</a>
<a href="#Div2">Div 2</a>
</div>
<div id="Div1">
content 1
</div>
<div id="Div2">
content 2
</div>
如果您想在点击后突出显示锚点,您可以使用此代码合并您的代码并添加您要查找的内容:
var url = window.location.href;
$(".Menu a").each(function(e) {
if (url == (this.href)) {
$(this).addClass("Active");
}
}).on("click", function(e) {
var a = this;
setTimeout(function() {
if (window.location.href == a.href)
$(a).addClass("Active");
}, 0);
});
我使用setTimeout (..., 0)
让浏览器处理点击并更改位置。