首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery:以最佳方式根据URL添加类

jQuery:以最佳方式根据URL添加类
EN

Stack Overflow用户
提问于 2016-02-08 13:13:51
回答 1查看 363关注 0票数 1

我有这个HTML作为进度计:

代码语言:javascript
复制
<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。

代码语言:javascript
复制
$( 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");
    }
});

我知道这并不是最好的方法(尽管代码确实有效),因为我不得不一遍又一遍地重复相同的事情。我试过prev(),但它似乎不起作用。

做这件事最好的方法是什么?

编辑:为了清楚起见,除了带有active类的元素之外,并不是所有元素都应该被赋予active类,只是前面的类。

编辑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等类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 13:34:54

代码语言:javascript
复制
$( document ).ready(function() {

    // Re-set all on entry
    $("#progess-1, #progess-2, #progess-3, #progress-4").removeClass("inactive active");

    // Then check for the correct one to 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");
    }
});

也可以通过用开关替换if语句来实现这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35270573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档