You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery移除字符串中从?至末尾的内容?(路由匹配场景)

用jQuery实现去除查询参数后的导航URL匹配

你需要匹配导航链接与当前页面URL,但要移除URL中?及之后的查询参数部分,下面是对应的jQuery实现方案:

核心思路

不管是导航链接的URL还是当前页面的URL,都先去除?开头的查询参数部分,再进行相等匹配,匹配成功后给链接添加aria-current="page"属性。

简单实现方案(split方法)

这种方式适合大多数普通URL场景:

// 处理当前页面URL,截取?之前的部分
const currentCleanUrl = window.location.href.split('?')[0];

// 遍历所有.nav-link元素
$('.nav-link').each(function() {
    // 处理当前链接的URL,截取?之前的部分
    const linkCleanUrl = this.href.split('?')[0];
    
    // 对比处理后的URL,匹配则设置属性
    if (linkCleanUrl === currentCleanUrl) {
        $(this).attr('aria-current', 'page');
    }
});

更严谨的实现方案(URL对象)

如果你的URL包含复杂路径、多域名场景,使用原生URL对象处理会更可靠,能准确提取域名和路径部分(自动忽略查询参数):

// 解析当前页面URL,提取域名+路径
const currentUrlObj = new URL(window.location.href);
const currentCleanUrl = currentUrlObj.origin + currentUrlObj.pathname;

// 遍历导航链接
$('.nav-link').each(function() {
    const linkUrlObj = new URL(this.href);
    const linkCleanUrl = linkUrlObj.origin + linkUrlObj.pathname;
    
    if (linkCleanUrl === currentCleanUrl) {
        $(this).attr('aria-current', 'page');
    }
});

对比原生JS代码的改动点

  • 用jQuery的$('.nav-link').each()替代原生的document.querySelectorAll('.nav-link').forEach()
  • 用jQuery的.attr()方法替代原生的setAttribute()
  • 核心的URL处理逻辑保持一致,只是结合jQuery的DOM操作语法进行了改写

内容的提问来源于stack exchange,提问作者Bradley Rice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:55:30