
在网页开发中,动态高亮当前激活的导航菜单或标签页是常见的交互需求。传统上,我们可能通过比较链接的 href 属性与 document.url(当前页面的完整 url)来判断哪个链接是激活状态。然而,在某些场景下,例如使用锚点链接(如 #tab1、#sectiona)进行页面内部导航或构建单页应用中的标签页时,我们希望根据 href 属性的特定值(而非完整 url)来激活相应的元素。这种需求要求我们能够精准地根据 href 属性的局部或精确值来选择并操作 dom 元素。
jQuery 提供了强大的选择器和 DOM 操作方法,使得根据元素属性值进行选择和修改变得非常便捷。下面将介绍两种主要方法,来实现根据 标签的 href 属性值来动态添加激活类。
jQuery 的核心优势在于其简洁高效的 DOM 操作能力。对于本教程的需求,我们将主要利用以下 jQuery 特性:
这种方法通过获取所有潜在的目标链接元素,然后使用 filter() 方法遍历这些元素,并在回调函数中检查每个元素的 href 属性是否与目标值匹配。
首先,我们通过一个通用的选择器(例如类名或标签名)获取所有可能的链接元素。接着,调用这些元素集合的 filter() 方法,并传入一个回调函数。该回调函数会针对集合中的每个元素执行,如果返回 true,则该元素会被保留在 filter() 的结果集中;如果返回 false,则会被过滤掉。在回调函数内部,我们通过 $(this).attr('href') 获取当前元素的 href 属性值,并与预设的目标值进行比较。
$(document).ready(function () {
const targetHref1 = "#tab1"; // 定义目标 href 值
// 选择所有目标链接,然后使用 filter 方法和回调函数匹配 href 属性
$('.hs-mega-menu ul li a').filter(function() {
// 检查当前元素的 href 属性是否与 targetHref1 严格相等
return $(this).attr('href') === targetHref1;
}).addClass("active"); // 为所有匹配的元素添加 'active' 类
});为了使激活状态可见,我们需要定义相应的 CSS 样式。
UXbot
AI产品设计工具
185
查看详情
/* 定义激活类样式 */
.active {
color: green; /* 文本颜色变为绿色 */
font-weight: bold; /* 字体加粗 */
text-decoration: underline; /* 添加下划线 */
}jQuery 提供了强大的属性选择器,允许我们直接在选择器字符串中指定元素的属性及其值。这种方法通常更简洁,且在大多数情况下效率更高。
通过在选择器中直接使用 [attribute="value"] 的语法,jQuery 能够直接从 DOM 中筛选出 href 属性值精确匹配特定字符串的 标签。这种方式将筛选逻辑内置到选择器引擎中,减少了 J*aScript 代码的编写量。
$(document).ready(function () {
const targetHref2 = "#tab2"; // 定义另一个目标 href 值
// 直接使用属性选择器筛选出 href 属性等于 targetHref2 的链接
// 并为所有匹配的元素添加 'active-test' 类
$('.hs-mega-menu ul li a[href="' + targetHref2 + '"]').addClass("active-test");
});为了区分效果,这里定义一个不同的激活类样式。
/* 定义另一个激活类样式 */
.active-test {
background-color: #ffddff; /* 背景色变为浅紫色 */
border-bottom: 2px solid purple; /* 底部添加紫色边框 */
}
) 结合回调函数更高效。为了更好地理解上述两种方法,以下提供一个完整的 HTML 结构,包含 jQuery 库的引入、样式定义以及两种方法的 J*aScript 脚本。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery 根据 href 属性值选择元素并添加激活类</title>
<!-- 引入 jQuery 库 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
/* 定义激活类样式 */
.active {
color: green;
font-weight: bold;
text-decoration: underline;
}
.active-test {
background-color: #ffddff;
border-bottom: 2px solid purple;
}
/* 基础导航样式 */
.hs-mega-menu ul {
list-style: none;
padding: 0;
margin: 0;
display: flex; /* 使用 Flexbox 使导航项水平排列 */
border: 1px solid #ddd;
border-radius: 5px;
background-color: #f9f9f9;
}
.hs-mega-menu ul li {
margin-right: 1px; /* 链接之间略微间距 */
}
.hs-mega-menu ul li a {
display: block;
padding: 10px 15px;
text-decoration: none;
color: #333;
transition: background-color 0.3s ease;
}
.hs-mega-menu ul li a:hover {
background-color: #e9e9e9;
}
</style>
</head>
<body>
<div class="hs-mega-menu">
<ul>
<li class="n*-item"> <a class="n*-link g-py-10--md g-px-15--md" href="#tab1" role="tab" data-toggle="tab">标签页 1 (方法一目标)</a> </li>
<li class="n*-item"> <a class="n*-link g-py-10--md g-px-15--md" href="#tab1" role="tab" data-toggle="tab">标签页 1 (方法一目标)</a> </li>
<li class="n*-item"> <a class="n*-link g-py-10--md g-px-15--md" href="#tab2" role="tab" data-toggle="tab">标签页 2 (方法二目标)</a> </li>
<li class="n*-item"> <a class="n*-link g-py-10--md g-px-15--md" href="#tab3" role="tab" data-toggle="tab">标签页 3 (未激活)</a> </li>
</ul>
</div>
<script>
$(document).ready以上就是使用 jQuery 根据 href 属性值选择元素并添加激活类的详细内容,更多请关注其它相关文章!
相关文章:
Log4j Console Appender性能瓶颈与高并发优化策略
解决Django多数据库/多Schema环境下外键迁移问题
QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录
微信网页版登录教程_微信网页版登录入口在哪
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
在Runstone环境中高效处理TasteDive API的JSON数据
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
Go语言中Map值调用指针接收器方法的限制与应对
处理Kafka消息时会话超时与实现幂等性消费者
汽车之家官方网站官网入口_汽车之家网页版直接进入
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
海棠电脑版入口_通过电脑访问海棠官网阅读
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
mysql如何设置表访问权限_mysql表访问权限配置
qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
Android Studio计算器C键功能异常排查与修复教程
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
J*aScript设计模式实践_j*ascript代码优化
谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
理解Python模块与全局变量的作用域管理
J*aScript中安全有效地处理localStorage字符串数据
多闪网页版在线观看免费入口_多闪官网访问入口
Lar*el Form Request中唯一性验证在更新操作中的正确实现
cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法
苹果手机如何防止被恶意App追踪
c++ 命名空间怎么用 c++ namespace使用指南
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达
Lar*el 中按“Has One Of Many”关联模型排序的最佳实践
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
yandex入口引擎手机版 yandex安卓版下载入口
基于多条件高效更新SQL表:利用CASE表达式优化业务逻辑
深入理解J*aScript中的B样条曲线与节点向量生成
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
J*a 递归快速排序中静态变量的状态管理与陷阱
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元
React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法