javascript - jQuery: Add class depending on URL in the best way -


i have html progress meter:

<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>    

i use following jquery add/remove classes depending on 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");     } }); 

i know isn't best way acomplish (even though code work), have repeat same thing on , over. have tried prev() didn't seem work.

what best way go it?

edit: clear, not elements apart 1 active class should given class of active, ones prior.

edit 2:

current activity:

user on page ?route=account/login&ssl, #progress-1 give class of .active.

user progresses ?route=checkout/cart sucessfully, , #progress-1 given class of .inactive , #progress-2 .active

user progresses ?route=checkout/checkout sucessfully, , #progress-1 & #progress-2 given class of .inactive , #progress-3 .active , on.

$( document ).ready(function() {      // re-set on entry     $("#progess-1, #progess-2, #progess-3, #progress-4").removeclass("inactive active");      // check correct 1 make active     if(location.search == "?route=account/login&ssl")         $("#progess-1").addclass("active");     else if(location.search == "?route=checkout/cart")     {         $("#progess-2").addclass("active");         $("#progess-1").addclass("inactive");     }     else if(location.search == "?route=checkout/checkout")     {         $("#progess-3").addclass("active");         $("#progess-1,#progess-2").addclass("inactive");     }     else if(location.search == "?route=checkout/success")     {         $("#progess-4").addclass("active");         $("#progess-1,#progess-2,#progess-3").addclass("inactive");     } }); 

this can achieved replacing if statement switch.


Comments

Popular posts from this blog

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -