对于我的网站导航,我需要将类“active”添加到li元素,具体取决于它是否与当前URL匹配。
导航HTML:
<ul id="nav">
<div id="wrapper">
<li><a href="/">Home</a></li>
<li><a href="/tagged/Review">Reviews</a></li>
<li><a href="/tagged/First_Look">First Looks</a></li>
<li><a href="/tagged/Commentary">Commentaries</a></li>
<li><a href="/tagged/Walkthrough">Walkthroughs</a></li>
<li><a href="/tagged/Achievement">Achievements</a></li>
</div>
</ul>
答案 0 :(得分:7)
如果您想使用“纯”(“vanilla”)JavaScript,请使用以下代码(假设<ul id="nav">
存在):
window.onload = function() {
var all_links = document.getElementById("nav").getElementsByTagName("a"),
i=0, len=all_links.length,
full_path = location.href.split('#')[0]; //Ignore hashes?
// Loop through each link.
for(; i<len; i++) {
if(all_links[i].href.split("#")[0] == full_path) {
all_links[i].className += " active";
}
}
}
使用jQuery:
$(document).ready(function(){
var full_path = location.href.split("#")[0];
$("#nav a").each(function(){
var $this = $(this);
if($this.prop("href").split("#")[0] == full_path) {
$this.addClass("active");
}
});
});
答案 1 :(得分:0)
我认为,在这种情况下,服务器端的改变是更好的。
使用javascript,你可以这样做:
var target = 0;
switch( window.location.pathname )
{
case "/tagged/Review":
target = 1;
break;
case "/tagged/First_Look":
target = 2;
break;
/* add other cases */
}
document.getElementById("nav").getElementByTagName("li")[target].classList.add("active");
在加载DOM之后放置代码。
如果是jquery,你可以使用:
var target = 0;
switch( window.location.pathname )
{
case "/tagged/Review":
target = 1;
break;
case "/tagged/First_Look":
target = 2;
break;
/* add other cases */
}
$($("#nav li")[target]).addClass("active");
修改强>
window.onload或$ .ready是了解文档是否已加载的方法。