如何轻松检查很多元素类(查询参数/字符串)?

时间:2017-08-06 17:41:01

标签: javascript jquery html css

我希望制作过滤功能,例如,我们有类别“a”,“b”,“c”,“d”和“e”。

我允许用户使用查询字符串进入页面。例如http://example.com?cate=ahttp://example.com?cate=b等。类别排序按钮是一组单选按钮。

以下是激活类别排序按钮的代码:

function GetURLParameter(sParam) {
        var sPageURL = window.location.search.substring(1);
        var sURLVariables = sPageURL.split("&");
        for (var i = 0; i < sURLVariables.length; i++) {
            var sParameterName = sURLVariables[i].split("=");
            if (sParameterName[0] == sParam) {
                return sParameterName[1];
            }
        }
    }
    var cate = GetURLParameter("cate");

    switch (cate) {
        case "a":
            $(window).load(function() {
                $("#aBtn").prop("checked", true);
            });
            break;
        case "b":
            $(window).load(function() {
                $("#bBtn").prop("checked", true);
            });
            break;
        case "c":
            $(window).load(function() {
                $("#cBtn").prop("checked", true);
            });
            break;
        case "d":
            $(window).load(function() {
                $("#dBtn").prop("checked", true);
            });
            break;
        case "e":
            $(window).load(function() {
                $("#eBtn").prop("checked", true);
            });
            break;
        default:
            break;
    }

然后,我希望过滤与“a”,“b”,“c”,“d”和“e”相匹配或不匹配的对象。有些对象属于多个cates。对象有一个共同的类,即“.all”。如果过滤处于活动状态,则不属于该类别的对象必须添加“.none”类。

以下是示例:

<div class="all a e">I have a and e.</div><!-- if query string = a or e, it should show -->
<div class="all b e">I have b and e.</div><!-- if query string = b or e, it should show -->
<div class="all b c e">I have b, c and e.</div><!-- if query string = b, c or e, it should show -->
<div class="all c">I have c.</div><!-- if query string = e, it should show -->
<div class="all d">I have d.</div><!-- if query string = d, it should show -->
<div class="all d">I have d.</div><!-- if query string = d, it should show -->
<div class="all d e">I have d and e.</div><!-- if query string = d or e, it should show -->

或者我应该为每个对象添加唯一ID吗?

1 个答案:

答案 0 :(得分:0)

你可以hide()他们全部然后show()匹配的。

$(".all").hide();
$("."+cate).show();

如果您真的希望添加课程none

$(".all").addClass("none");
$("."+cate).removeClass("none");

我在CodePen上做了一个小小的演示,我通过文字输入“模拟”cate值。
;)