gpt4 book ai didi

javascript - 通过Jquery加载navbar时设置active类

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:20 25 4
gpt4 key购买 nike

在将导航菜单作为单独的 html 文件加载时,我正在尝试使用 jquery 初始化导航菜单的事件类。

我不熟悉 PHP,而且我对网站生成还很陌生,所以我不太熟悉 JS 以及常用语言(HTML、CSS 和 JS)之间的集成。我搜索了整个 Stack Overflow 并尝试了几个解决方案,但我显然遗漏了一些东西:

我认为我的问题与等待页面加载有关。我实现了一个有效的“点击”功能,但当我实际在菜单中加载页面时,它确实将类设置为事件 <li> .

编辑:澄清一下,我通过点击事件成功设置了事件类,背景将变为蓝色。但是,当菜单链接实际激活时,背景会闪烁蓝色,然后重新加载为黑色。我想弄清楚如何在通过 Jquery 调用导航菜单时设置事件类。为了证明我的风格适用于点击事件,请看截图here .

这是我现在拥有的简化版本:

index.html

<!DOCTYPE html>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
</head>

<body>
<div class="container">
<!--Navigation bar-->
<div id="nav-placeholder"></div>
<script>
$("#nav-placeholder").load("nav.html");
</script>
<!--end of Navigation bar-->

<div class="mainBlock">
<div class="mainPage">
<div class="mainContent">
<p>Welcome! This is my website.</p>
</div>
</div>
</div>

</div>
</body>

</html>

nav.html

<!DOCTYPE html>
<html>
<div class="navbar">
<ul>
<li><a href="/index.html" id="navHome">Home</a></li>
<li><a href="/ref.html" id="navRef">References</a></li>
</ul>

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script type="text/javascript">
$(document).on("click", "ul li", function(){
$('.navbar li').removeClass('active');
$(this).addClass("active");
})
</script>

// Inserted scripts here based on other stackoverflow posts
</div>
</html>

样式.css

.navbar {
width: 1000px;
background: #000;
text-align: left;
}

.navbar ul {
margin: 0px;
padding: 0px;
}

.navbar ul li {
list-style-type: none;
display: inline-block;
padding: 5px 10px;
color: #fff;
text-decoration: none;
border-right: 1px solid #fff;
}

.navbar ul li .active{
background: #33b;
}

.navbar ul li a:hover {
border-bottom:3px #FFF solid;
}

.navbar a:link {
color: #fff;
text-decoration: none;
}

.navbar a:visited {
color: #fff;
text-decoration: none;
}

我希望导航菜单中的当前元素得到一个蓝色高亮显示。当点击但未被选中时(即页面实际上并未加载),这已成功设置为事件类(背景为蓝色)。

最佳答案

您遇到此问题是因为样式未应用于 li 元素。 .navbar ul li .active 将在以下层次结构中查找具有类 .active 的元素 .navbar 元素 -> ul 元素 -> li 元素 -> .active 元素。

而您希望将样式应用到类为 .active 的 li 元素。为此,您需要如下提及选择器。

(标签和类名之间没有空格)

.navbar ul li.active{
background: #33b;
}

上面的选择器将引用一个带有 .active 类的 li 元素。如果您有兴趣,那么您可以阅读有关选择器的更多信息 herehere

index.html

<!DOCTYPE html>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
</head>

<body>
<div class="container">
<!--Navigation bar-->
<div id="nav-placeholder"></div>
<script>
$("#nav-placeholder").load("nav.html");
</script>
<!--end of Navigation bar-->

<div class="mainBlock">
<div class="mainPage">
<div class="mainContent">
<p>Welcome! This is my website.</p>
</div>
</div>
</div>

</div>
</body>

</html>

导航.html

<div class="navbar">
<ul id="navItems">
<li><a href="/index.html" id="navHome">Home</a></li>
<li><a href="/ref.html" id="navRef">References</a></li>
</ul>
<script>
$(function(){
var current = location.pathname;
$('#navItems li a').each(function(){
var $this = $(this);
// if the current path is like this link, make it active
if($this.attr('href').indexOf(current) !== -1){
$this.parent().addClass('active');
}
})
})
</script>
</div>

在css中改变事件类样式

.navbar ul li.active{
background: #33b;
}

关于javascript - 通过Jquery加载navbar时设置active类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57176001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com