这个需求是要使用jQuery检查当前页面的URL是否与页面中某个<ul>
列表内的链接(<a>
标签的href
属性)匹配,如果匹配则给该链接添加一个特定的CSS类(通常是"active"类)。
以下是完整的实现代码示例:
$(document).ready(function() {
// 获取当前页面的URL路径
var currentUrl = window.location.pathname;
// 遍历UL中的所有链接
$('ul li a').each(function() {
// 获取链接的href属性并标准化(移除末尾的斜杠)
var linkUrl = $(this).attr('href').replace(/\/$/, '');
// 比较当前URL和链接URL
if (currentUrl.replace(/\/$/, '') === linkUrl) {
$(this).addClass('active'); // 添加active类
$(this).parent('li').addClass('active'); // 也可以给父级li添加类
}
});
});
window.location.pathname
获取当前页面的路径部分(不包括域名)$('ul li a')
选择所有在<ul>
内的<a>
标签replace(/\/$/, '')
移除URL末尾的斜杠,确保比较的一致性addClass()
方法添加"active"类如果需要更复杂的匹配(如考虑查询参数或哈希):
$(function() {
var currentUrl = window.location.href.split('?')[0].split('#')[0];
$('ul li a').each(function() {
var linkUrl = $(this).attr('href').split('?')[0].split('#')[0];
if (currentUrl === linkUrl) {
$(this).addClass('active');
}
});
});
这种技术常用于:
如果不使用jQuery,纯JavaScript实现:
document.addEventListener('DOMContentLoaded', function() {
var currentUrl = window.location.pathname;
var links = document.querySelectorAll('ul li a');
links.forEach(function(link) {
var linkUrl = link.getAttribute('href').replace(/\/$/, '');
if (currentUrl.replace(/\/$/, '') === linkUrl) {
link.classList.add('active');
}
});
});
这个解决方案应该能满足大多数URL匹配和高亮需求。
没有搜到相关的文章