0

0

使用 jQuery 根据 href 属性值选择元素并添加激活类

碧海醫心

碧海醫心

发布时间:2025-10-05 15:53:42

|

148人浏览过

|

来源于php中文网

原创

使用 jQuery 根据 href 属性值选择元素并添加激活类

本文详细介绍了如何使用 jQuery 根据 HTML 元素的 href 属性值来选择特定元素,并为其动态添加一个 'active' CSS 类。这对于实现基于锚点链接的导航高亮或标签页状态管理非常实用,避免了依赖完整的页面 URL 进行判断,提供了两种简洁高效的实现方法,并附带完整示例和注意事项。

引言:基于 href 属性值高亮导航项的需求

在网页开发中,动态高亮当前激活的导航菜单或标签页是常见的交互需求。传统上,我们可能通过比较链接的 href 属性与 document.url(当前页面的完整 url)来判断哪个链接是激活状态。然而,在某些场景下,例如使用锚点链接(如 #tab1、#sectiona)进行页面内部导航或构建单页应用中的标签页时,我们希望根据 href 属性的特定值(而非完整 url)来激活相应的元素。这种需求要求我们能够精准地根据 href 属性的局部或精确值来选择并操作 dom 元素。

jQuery 提供了强大的选择器和 DOM 操作方法,使得根据元素属性值进行选择和修改变得非常便捷。下面将介绍两种主要方法,来实现根据 标签的 href 属性值来动态添加激活类。

核心技术:jQuery 元素选择与属性过滤

jQuery 的核心优势在于其简洁高效的 DOM 操作能力。对于本教程的需求,我们将主要利用以下 jQuery 特性:

  • 元素选择器: 用于定位一组目标元素,例如 $('.hs-mega-menu ul li a')。
  • filter() 方法: 允许在已选定的元素集合中进一步筛选出符合特定条件的元素。
  • 属性选择器: 一种直接在选择器字符串中指定元素属性及其值的强大方式,例如 [href="#tab1"]。

方法一:使用 filter() 结合回调函数进行属性匹配

这种方法通过获取所有潜在的目标链接元素,然后使用 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 样式

为了使激活状态可见,我们需要定义相应的 CSS 样式。

知鹿匠
知鹿匠

知鹿匠教师AI工具,新课标教案_AI课件PPT_作业批改

下载
/* 定义激活类样式 */
.active {
  color: green; /* 文本颜色变为绿色 */
  font-weight: bold; /* 字体加粗 */
  text-decoration: underline; /* 添加下划线 */
}

优点

  • 灵活性高: 回调函数内部可以执行任何复杂的逻辑,不仅仅是简单的相等比较,例如可以进行正则表达式匹配、子字符串包含检查等。
  • 可读性好: 逻辑清晰,易于理解筛选条件。

方法二:直接利用 jQuery 属性选择器进行高效匹配

jQuery 提供了强大的属性选择器,允许我们直接在选择器字符串中指定元素的属性及其值。这种方法通常更简洁,且在大多数情况下效率更高。

描述

通过在选择器中直接使用 [attribute="value"] 的语法,jQuery 能够直接从 DOM 中筛选出 href 属性值精确匹配特定字符串的 标签。这种方式将筛选逻辑内置到选择器引擎中,减少了 JavaScript 代码的编写量。

示例代码

$(document).ready(function () {
  const targetHref2 = "#tab2"; // 定义另一个目标 href 值

  // 直接使用属性选择器筛选出 href 属性等于 targetHref2 的链接
  // 并为所有匹配的元素添加 'active-test' 类
  $('.hs-mega-menu ul li a[href="' + targetHref2 + '"]').addClass("active-test");
});

CSS 样式

为了区分效果,这里定义一个不同的激活类样式。

/* 定义另一个激活类样式 */
.active-test {
  background-color: #ffddff; /* 背景色变为浅紫色 */
  border-bottom: 2px solid purple; /* 底部添加紫色边框 */
}

优点

  • 代码简洁: 无需编写额外的回调函数,选择器本身就包含了匹配逻辑。
  • 性能优异: jQuery 的选择器引擎通常经过高度优化,直接使用属性选择器在处理大量元素时可能比 filter() 结合回调函数更高效。

完整示例:HTML 结构与效果演示

为了更好地理解上述两种方法,以下提供一个完整的 HTML 结构,包含 jQuery 库的引入、样式定义以及两种方法的 JavaScript 脚本。




  
  
  jQuery 根据 href 属性值选择元素并添加激活类
  
  
  



  

  
                

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

151

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

312

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

396

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

504

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

187

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

120

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

176

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

40

2026.01.13

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 25.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号