jquery - 放
问题描述
我正在一个 Asp.Net 网站上工作,在该网站上,我将 Site.Master 中的默认水平导航栏替换为 AdminLTE 示例中可用的导航栏。AdminLTE 示例。
垂直导航栏看起来像这样
导航栏的代码如下
<ul class="sidebar-menu" data-widget="tree">
<li class="header">Navigation</li>
<!-- Optionally, you can add icons to the links -->
<li>
<a href="Default.aspx">
<i class="fa fa-home"></i>
<span>Home</span>
</a>
</li>
<li>
<a href="About.aspx">
<i class="fa fa-question"></i>
<span>About</span>
</a>
</li>
<li>
<a href="Contact.aspx">
<i class="fa fa-address-book"></i>
<span>Contact</span>
</a>
</li>
<li class="treeview">
<a href="#"><i class="fa fa-link"></i> <span>Multilevel</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="#">Link in level 2</a></li>
<li><a href="#">Link in level 2</a></li>
</ul>
</li>
</ul>
一旦用户导航到该特定页面,我想将列表项类设置为活动状态。例如,如果用户单击About链接,它将被重定向到 about 页面,然后在该页面上,about 链接的类应更改为active
我尝试使用这个特定的脚本,但它对我不起作用
$(function() {
var pgurl = window.location.href.substr(window.location.href.lastIndexOf("/")+1);
$("ul li a").each(function(){
if($(this).attr("href") == pgurl || $(this).attr("href") == '' )
$(this).addClass("active");
})
});
不知道我错过了什么。
解决方案
您的each
函数基于<a>
元素的选择器。
因此,您当前正在将类添加到<a>
元素中,如$(this)
.
您似乎想将其添加到关联的<li>
元素中。
我推荐 jQuery 的parent()
.
获取当前匹配元素集中每个元素的父元素,可选地由选择器过滤。
var test_url = 'localhost:5583/About.aspx';
$(function() {
var pgurl = test_url.substr(test_url.lastIndexOf("/") + 1);
$("ul li a").each(function() {
if ($(this).attr("href") == pgurl || $(this).attr("href") == '')
$(this).parent().addClass("active");
})
});
.active {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="sidebar-menu" data-widget="tree">
<li class="header">Navigation</li>
<!-- Optionally, you can add icons to the links -->
<li>
<a href="Default.aspx">
<i class="fa fa-home"></i>
<span>Home</span>
</a>
</li>
<li>
<a href="About.aspx">
<i class="fa fa-question"></i>
<span>About</span>
</a>
</li>
<li>
<a href="Contact.aspx">
<i class="fa fa-address-book"></i>
<span>Contact</span>
</a>
</li>
<li class="treeview">
<a href="#"><i class="fa fa-link"></i> <span>Multilevel</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="#">Link in level 2</a></li>
<li><a href="#">Link in level 2</a></li>
</ul>
</li>
</ul>
或者,主要作为演示,您可以将选择器更改为li
并测试href
后代<a>
元素的 s。
var test_url = 'localhost:5583/About.aspx';
$(function() {
var pgurl = test_url.substr(test_url.lastIndexOf("/") + 1);
$("ul li").each(function() {
if ($('a', this).attr("href") == pgurl || $('a', this).attr("href") == '')
$(this).addClass("active");
})
});
.active {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="sidebar-menu" data-widget="tree">
<li class="header">Navigation</li>
<!-- Optionally, you can add icons to the links -->
<li>
<a href="Default.aspx">
<i class="fa fa-home"></i>
<span>Home</span>
</a>
</li>
<li>
<a href="About.aspx">
<i class="fa fa-question"></i>
<span>About</span>
</a>
</li>
<li>
<a href="Contact.aspx">
<i class="fa fa-address-book"></i>
<span>Contact</span>
</a>
</li>
<li class="treeview">
<a href="#"><i class="fa fa-link"></i> <span>Multilevel</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="#">Link in level 2</a></li>
<li><a href="#">Link in level 2</a></li>
</ul>
</li>
</ul>
推荐阅读
- alert - 如何在方向改变时移动平均颜色改变时添加警报条件
- php - 使用 JSON 发送数据时 cURL php POST 错误标头
- c# - 初始加载站点时显示正在加载的 Blazor (webassembly) 程序集/Dll
- c++ - 指向引用 NULL 的类的指针,但它调用成员函数
- javascript - Javascript如何查看具有字符串数组的两个对象是否包含相同的值
- django - 用户发布故事提要时故事对象不会过期
- android - android studio下载组件错误
- intellij-idea - 如何在 Intellij 中隐藏编辑器选项卡?
- node.js - 使用jsdom运行脚本后如何抓取整个html
- datetime - 在 Julia 中为 datetime 添加一个小时?