嘿伙计们我写了一个简单的函数,它读取当前的url并设置某种亮点。
如果我打开网址,一切正常,但如果我做更多高级请求则无效。
示例:如果我请求“/ customers”它可以工作但是如果我请求“/ customers / 10”它就不再工作了。 有人可以为我提供一些正则表达式的动作吗?
提前致谢
function setGUI() {
var url = window.location.pathname;
switch(url) {
case "/orders":
$(document).ready(function() {
$(".nav li:nth-child(2)").addClass("active");
});
break;
case "/customers": // match "customers/any_id"
$(document).ready(function() {
$(".nav li:nth-child(3)").addClass("active");
});
break;
case "/partners": match "partners/anyid"
$(document).ready(function() {
$(".nav li:nth-child(4)").addClass("active");
});
break;
case "/help":
$(document).ready(function() {
$(".nav li:nth-child(5)").addClass("active");
});
break;
case "/users/": // match "/users/any_id/"
$(document).ready(function() {
$(".nav li:nth-child(6)").addClass("active");
});
break;
default:
alert("debug");
}
}
setGUI();
答案 0 :(得分:1)
看起来你的函数不需要使用第二个斜杠之后的任何信息,所以我建议你从第二个斜杠开始删除所有内容:
var url = window.location.pathname.replace(/^(\/[^/]+)\/.*/, "$1");
...然后按原样保留开关和案例条件。
答案 1 :(得分:0)
Switch将根据相等性进行评估。一种解决方案是使用if-else
代替。
我建议使用indexOf
:
..
if(url.indexOf("/orders") > -1){
$(document).ready(function() {
$(".nav li:nth-child(2)").addClass("active");
});
}else if(url.indexOf("/customers") > -1){
..