Эй, ребята, я написал простую функцию, которая читает текущий url и устанавливает какой-то изюминкой.
Если я открою 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();
Похоже, ваша функция не должна использовать любую информацию, которая может быть после второй косой черты, поэтому я бы предложил просто удалить все, начиная со второй косой черты:
var url = window.location.pathname.replace(/^(\/[^/]+)\/.*/, "$1");
... и затем оставляйте свои условия переключения и условия, как они есть.
case "/users/"
- попробуйте изменить его на case "/users"
(удалите завершающий /
чтобы он соответствовал формату других URL).
Коммутатор будет оценивать базу по равенству. Одним из решений является использование if-else
вместо этого. Я бы рекомендовал использовать indexOf
:
..
if(url.indexOf("/orders") > -1){
$(document).ready(function() {
$(".nav li:nth-child(2)").addClass("active");
});
}else if(url.indexOf("/customers") > -1){
..
if elseif
switch(true)
и поставить условия в каждомcase
.