у меня есть этот HTML для измерителя прогресса:JQuery: Добавить класс в зависимости от URL наилучшим образом
<div class="col-md-3" style="margin-left: -20px;">
<div class="progress-pos active" id="progess-1">
<div class="progress-pos-inner">
Login
</div>
</div>
</div>
<div class="col-md-3 progress-pos-container">
<div class="progress-pos" id="progess-2">
<div class="progress-pos-inner">
Scan Items
</div>
</div>
</div>
<div class="col-md-3 progress-pos-container">
<div class="progress-pos" id="progess-3">
<div class="progress-pos-inner">
Confirm Address
</div>
</div>
</div>
<div class="col-md-3 progress-pos-container">
<div class="progress-pos" id="progess-4">
<div class="progress-pos-inner">
Finished
</div>
</div>
</div>
Я использую следующий JQuery, чтобы добавить/удалить классы в зависимости от URL.
$(document).ready(function() {
if(location.search == "?route=account/login&SSL"){
$("#progess-1").addClass("active");
}
if(location.search == "?route=checkout/cart"){
$("#progess-2").addClass("active");
$("#progess-1").addClass("inactive");
}
if(location.search == "?route=checkout/checkout"){
$("#progess-3").addClass("active");
$("#progess-1").addClass("inactive");
$("#progess-2").addClass("inactive");
}
if(location.search == "?route=checkout/success"){
$("#progess-4").addClass("active");
$("#progess-1").addClass("inactive");
$("#progess-2").addClass("inactive");
$("#progess-3").addClass("inactive");
}
});
Я знаю, что это не лучший способ acomplish это (Даже если код работает), я должен повторить то же самое снова и снова. Я пробовал prev()
, но он, похоже, не работал.
Каков наилучший способ?
EDIT: Чтобы было ясно, что не все элементы отдельно от одного с active
класса следует класс active
, только те, которые до этого.
EDIT 2:
Текущая активность:
Пользователь на странице ?route=account/login&SSL
, #progress-1
это дать класс .active
.
Пользователь прогрессирует ?route=checkout/cart
успешно, и #progress-1
дается класс .inactive
и #progress-2
является .active
Пользователь прогрессирует ?route=checkout/checkout
успешно, и #progress-1
& #progress-2
приведены класс .inactive
и #progress-3
является .active
и так далее.
Я думаю, вы можете сделать что-то похожее на: $ ('. All-links'). AddClass ('inactive'); $ ('.' + location.search) .addClass ('active'). Дайте мне знать, если это имеет смысл. – Vnuuk
@ Vnuuk Спасибо за помощь, но это не имеет для меня никакого смысла, поскольку я остаюсь noob в js. :) –
Позвольте мне объяснить. # 1. Вам нужно изменить HTML и # progess-N идентификаторы, которые вы можете использовать в URL-адресе. Ясно? – Vnuuk