我希望创建一个过滤功能,例如,我们有类别“ a”,“ b”,“ c”,“ d”和“ e”。
我允许用户使用查询字符串来访问页面。如http://example.com?cate=a,http://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”不匹配的对象。一些对象属于多个类别。对象具有一个公共类,即“
.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?
最佳答案
您可以全部hide()
它们,然后show()
匹配的。
$(".all").hide();
$("."+cate).show();
如果您确实希望添加类
none
:$(".all").addClass("none");
$("."+cate).removeClass("none");
我在CodePen上做了一个小样,通过文本输入“模拟”
cate
值。;)