【发布时间】:2014-05-08 07:22:36
【问题描述】:
<div class="content" data-category="shoes" data-price="1000" data-brand="Andrew">shoe1</div><br />
<div class="content" data-category="shirts" data-price="1200" data-brand="Sunbaby">shirt1</div><br />
<div class="content" data-category="shoes" data-price="2000" data-brand="Andrew">shoe2</div><br />
<div class="content" data-category="shoes" data-price="800" data-brand="Andrew">shoe3</div><br />
<div class="content" data-category="shirts" data-price="1300" data-brand="Sunbaby">shirt2</div><br />
<div class="content" data-category="shirts" data-price="800" data-brand="Sunbaby">shirt3</div><br />
<input type="checkbox" class="category" category="shoes" id="shoes">shoes
<input type="checkbox" class="category" category="shirts" id="shirts">shirts
<input type="radio" name="range" value="0-9000" checked>All
<input type="radio" name="range" value="0-999">0-1000
<input type="radio" name="range" value="1000-2000">1000-2000
基本上,如果您从复选框中选择一个类别,比如说鞋子,那么应该只显示带有鞋子的 div。然后,如果您使用价格、一些开始和结束限制过滤结果,它应该显示鞋子类别 div 落在该特定范围内,而不是超出该范围。 在这两者之间,如果您还选择品牌复选框。那么它应该匹配来自类别、品牌和价格范围的所有三个复选框
例如:- 我们选择了鞋子复选框,它应该显示鞋子 div;那么如果我们选择范围为 1000-2000,那么它应该显示 shoe1 和 shoe2 而不是 shoe3。
如果你选择了鞋子类别,然后如果你也选择了品牌复选框。它应该在两个复选框的基础上过滤掉,然后它应该寻找价格范围并匹配结果,过滤div。
请帮忙。
<script type="text/javascript">
$("input.category").prop("checked", true).change(function (e) {
$("input[name=range]:checked").trigger("change");
});
$("input.brand").prop("checked", true).change(function (e1) {
$("input[name=range]:checked").trigger("change");
});
$("input[name=range]").change(function (e) {
var toggle = this.checked;
var range = this.value.split('-');
var rangeFrom = parseInt(range[0]);
var rangeTo = parseInt(range[1]);
$(".content[data-price]").each(function(){
var $this = $(this);
var categoryActive = $("#" + $this.data("category")).prop("checked");
var brandActive = $("#" + $this.data("brand")).prop("checked");
var price = parseFloat($this.data('price'));
$this.toggle(price >= rangeFrom && price <= rangeTo && categoryActive);
$this.toggle(price >= rangeFrom && price <= rangeTo && $("#" + $this.data("brand")).prop("checked"));
});
});
</script>
我在一个好友的帮助下尝试了这个脚本。 感谢和谷歌,如果你能在这方面提供帮助
【问题讨论】:
-
那么,您尝试过什么?据我所知,SO 不是人们按需为您编码的地方。基本上,您想要的是某种在线购物网站的整个排序逻辑。google.com 可能会帮助您入门。
-
请看一下脚本,请帮忙
-
这是一种非常脆弱的方法,不应该在客户端 JavaScript 中实现。
-
我也写了javascript代码。请更正我的代码....
-
@Two-Bit Alchemist 在实现这个服务器端是完全错误的。这可以完美地在客户端完成,并且有几个库可以做到这一点。
标签: javascript jquery html checkbox