jQuery实现多条件筛选

jerry JQuery 2015年08月20日 收藏

我们在电商平台购买商品时,在商品列表页根据品牌、款式、价格范围等条件进行筛选查询,当点击某个条件时,在页面上会显示用户所选择的条件集合,并且将对应的符合条件的商品信息展示出来。那么今天我们使用jQuery来实现这一前端效果。

HTML

首先,我们将查询条件分类,在页面中布置条件容器li.select-list和已选择的条件容器div.select-result。

  1. <ul class="select">
  2. <li class="select-list">
  3. <dl id="select1">
  4. <dt>上装:</dt>
  5. <dd class="select-all selected"><a href="#">全部</a></dd>
  6. <dd><a href="#">针织衫</a></dd>
  7. <dd><a href="#">毛呢外套</a></dd>
  8. <dd><a href="#">T恤</a></dd>
  9. <dd><a href="#">羽绒服</a></dd>
  10. <dd><a href="#">棉衣</a></dd>
  11. <dd><a href="#">卫衣</a></dd>
  12. <dd><a href="#">风衣</a></dd>
  13. </dl>
  14. </li>
  15. <li class="select-list">
  16. <dl id="select2">
  17. <dt>裤装:</dt>
  18. <dd class="select-all selected"><a href="#">全部</a></dd>
  19. <dd><a href="#">牛仔裤</a></dd>
  20. <dd><a href="#">小脚/铅笔裤</a></dd>
  21. <dd><a href="#">休闲裤</a></dd>
  22. <dd><a href="#">打底裤</a></dd>
  23. <dd><a href="#">哈伦裤</a></dd>
  24. </dl>
  25. </li>
  26. <li class="select-result">
  27. <dl>
  28. <dt>已选条件:</dt>
  29. <dd class="select-no">暂时没有选择过滤条件</dd>
  30. </dl>
  31. </li>
  32. </ul>

布置好内容后,给页面内容加上css样式以及加载相关js。

  1. <link rel="stylesheet" type="text/css" href="css/style.css">
  2. <script type="text/javascript" src="js/jquery.js"></script>
  3. <script type="text/javascript" src="js/script.js"></script>

jQuery

当用户点击任意条件时,标记当前选中状态,相邻条件取消选中状态,并且更新已选条件容器内容,请看代码:

  1. $(document).ready(function(){
  2. $("#select1 dd").click(function () {
  3. $(this).addClass("selected").siblings().removeClass("selected");
  4. if ($(this).hasClass("select-all")) {
  5. $("#selectA").remove();
  6. } else {
  7. var copyThisA = $(this).clone();
  8. if ($("#selectA").length > 0) {
  9. $("#selectA a").html($(this).text());
  10. } else {
  11. $(".select-result dl").append(copyThisA.attr("id", "selectA"));
  12. }
  13. }
  14. });
  15. $("#select2 dd").click(function () {
  16. $(this).addClass("selected").siblings().removeClass("selected");
  17. if ($(this).hasClass("select-all")) {
  18. $("#selectB").remove();
  19. } else {
  20. var copyThisB = $(this).clone();
  21. if ($("#selectB").length > 0) {
  22. $("#selectB a").html($(this).text());
  23. } else {
  24. $(".select-result dl").append(copyThisB.attr("id", "selectB"));
  25. }
  26. }
  27. });
  28. $("#selectA").live("click", function () {
  29. $(this).remove();
  30. $("#select1 .select-all").addClass("selected").siblings().removeClass("selected");
  31. });
  32. $("#selectB").live("click", function () {
  33. $(this).remove();
  34. $("#select2 .select-all").addClass("selected").siblings().removeClass("selected");
  35. });
  36. $(".select dd").live("click", function () {
  37. if ($(".select-result dd").length > 1) {
  38. $(".select-no").hide();
  39. } else {
  40. $(".select-no").show();
  41. }
  42. });
  43. });

实际应用中,我们要结合后端程序,实现帅选条件时,页面响应的内容也会变化,有兴趣的同学可以尝试下。

下载地址