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

JavaScript URL匹配异常:跳转后两个if条件均触发的问题求助

问题分析与解决方案

你的问题核心在于URL匹配的逻辑不够精确,导致两个if条件都被触发:当URL是/reception-order-header-supplier/xxx时,/reception-order-header/?这个匹配规则会命中其中的子串/reception-order-header/,所以第二个alert('2')也会执行。

解决方法:使用精确的路径匹配

推荐用window.location.pathname获取当前页面的路径部分(比直接用href更靠谱,因为它只包含路径,不会混入域名、查询参数等内容),然后通过以下几种方式做精准判断:

方式1:带锚点的正则表达式

用^(字符串开头)和$(字符串结尾)限定匹配范围,确保只匹配完整的目标路径:

$(document).ready(function() {
  const path = window.location.pathname;
  
  // 匹配 /reception-order-header-supplier 或 /reception-order-header-supplier/
  if (path.match(/^\/reception-order-header-supplier\/?$/)) {
    alert('1');
  }
  
  // 匹配 /reception-order-header 或 /reception-order-header/
  if (path.match(/^\/reception-order-header\/?$/)) {
    alert('2');
  }
});

方式2:直接字符串判断(更直观)

如果路径后面会跟ID等参数(比如/reception-order-header-supplier/123),可以用startsWith并排除混淆路径;如果是固定路径,直接全等判断即可:

$(document).ready(function() {
  const path = window.location.pathname;
  
  // 处理带supplier的路径(支持后续带参数)
  if (path.startsWith('/reception-order-header-supplier')) {
    alert('1');
  }
  
  // 处理普通订单路径,同时排除supplier的子路径
  if (path.startsWith('/reception-order-header') && !path.startsWith('/reception-order-header-supplier')) {
    alert('2');
  }
});

额外提醒:你的点击函数有潜在bug

第二个点击函数里,$.get("/reception-type/"+type, ...)中的type变量未定义!第一个函数里你通过var type = $(this).attr('data-type');获取了类型,但第二个函数漏掉了这一步,会导致请求URL变成/reception-type/undefined,需要补上:

$('a[href="#reception-order"]').on('click', function() {
  // 补上获取type的代码
  var type = $(this).attr('data-type');
  $.get("/reception-type/"+type, function(data) {
    // 原有的弹窗渲染、事件绑定逻辑...
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:04