我目前正在使用bootstrap框架构建网站,但我遇到了一个小问题,就是我想根据菜单项使用if语句来激活菜单项。
例如,如果文件名是“ about”,则“ about”选项卡将处于活动状态。
<li class="nav-item active">
<a class="nav-link" href="about.php">About <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
alert(filename);
如果有人能够提供帮助,我会非常感激,在过去的3个小时中,我一直在努力,没有取得任何成功。
答案 0 :(得分:2)
您已经成功从URL中检索了文件名。这样,您就可以使用jQuery选择器将 active 类添加到相应的链接中。
假设:您正在使用jQuery,因为它目前是Bootstrap组件的要求。
示例:
<script>
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
$('a[href*="' + filename + '"]').addClass('active');
</script>
答案 1 :(得分:2)
您可以检查所有导航栏菜单以找到匹配项。 这是一个例子
$('.navbar ul li a').each(function(){
var $this = $(this);
// if the current path is like this link, make it active
if($this.attr('href').indexOf(filename) !== -1){
$this.parents('li').addClass('active');
return false;
}
})
“文件名”是您当前的实际文件名。
答案 2 :(得分:2)
$('.nav-link').removeClass("active");
$('#' + filename).addClass("active");
在script标记内使用此代码,并确保将ID添加到每个等效于filename的li。
如果您遇到其他问题,请告诉我。
答案 3 :(得分:0)
根据您的html代码,您需要将active
类添加到a
标签的parent中。所以尝试这段代码
$('.nav-item').removeClass('active'); //Remove active class from elements
$('a[href*="' + filename + '"]').parent().addClass("active"); // add active class
答案 4 :(得分:0)
这是使用本地javascript的动态方式
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
var file = filename.split(".");
var TagItems = document.getElementsByClassName("nav-item");
for(navitem of TagItems)
{
for(item of navitem.children)
{
var targetFile = item.getAttribute("href").split(".");
if(targetFile[0] == file[0])
navitem.classList.add("active");
else
navitem.classList.remove("active");
}
}