javascript - 如何创建 "narrow by"过滤菜单?

标签 javascript jquery html ajax css

我想做一个像mcmaster.com网站那样的侧边栏菜单。它允许您动态缩小产品范围并切换选项。正如您在图像中看到的,当选择“公制”选项时,所有页面都会根据基于公制的产品、侧边栏以及整个页面进行更改。有趣的是,URL 没有太大变化。我的意思是单击“度量”选项不会重新加载页面。 before clicking the "metric" option

after clicking the "metric" option

那么,我可以只用 html、css 和 Javascript 得到这样的东西吗?

最佳答案

这个问题太宽泛了。您实际上需要提出代码,然后将其张贴在这里,以便社区提供帮助。

据我所知,他们使用 Ajax 来根据过滤器选项更新页面内容。

一种简单的过滤形式是,如果页面中已经显示了一些元素,然后根据过滤器,显示一些元素,隐藏一些元素。

下面是一个简单的例子。蓝色是公制,绿色是英寸。此外,如果您单击清除,您将清除过滤。这是您可以创建的最简单的过滤器。

$(".filter span").click(function(){
  
  $(".filter span").removeClass("selected");
  
  $(this).toggleClass("selected");
  
  var theClass = $(this).attr("class");
  theClass = theClass.replace(" selected","");
  
  if ( theClass === "metric" ) {
    $(".items .inch").hide();
    $(".items .metric").show();
    } else if ( theClass === "inch" ){
      $(".items .inch").show();
      $(".items .metric").hide();
      
      } else {
        $(".item").show();
        $(".filter span").removeClass("selected");
        }
  
  });
.filter {
  width: 100%;
  display: block;
  float: left:
  }

.items {
  width: 100%;
  display: block;
  float: left;
  }

.item {
  display: block;
  float: left;
  width: 10%;
  margin-right: 10px;
  margin-bottom: 10px;
  border: solid 1px #ccc;
  padding: 10px;
  text-align: center;
  }

.items .inch {
  background: #0f0;
  }

.items .metric {
  background: #00f;
  }

.filter span:hover {
  cursor: pointer;
  font-weight: 900;
  padding: 2px;
  border: solid 1px #000;
  }

.selected {
    font-weight: 900;
  padding: 2px;
  border: solid 1px #000;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="filter">
  Choose: <span class="metric">metric</span> <span class="inch">inch</span><span class="clear"> clear</span>
  </div>
<ul class="items">
  
  <div class="item metric">1. metric</div>
  <div class="item inch">2. inch</div>
  <div class="item metric">3. metric</div>
  <div class="item metric">4. metric</div>
  <div class="item inch">5. inch</div>
  <div class="item metric">6. metric</div>
  <div class="item metric">7. metric</div>
  <div class="item inch">8. inch</div>
  <div class="item metric">9. metric</div>
  
  

  
  
  </ul>

关于javascript - 如何创建 "narrow by"过滤菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230855/

相关文章:

javascript - 不能使用嵌套 anchor

javascript - 使 Jquery Autocomplete 或 Select2 插件在 knockout foreach 绑定(bind)中工作

html - 我网页上的 CSS 错误

javascript - JS promise : control flow

javascript - HTML 保存指向文件的链接并在以后使用它们链接

javascript - Vimeo 播放器 - 监听 Action 事件,例如分享

jquery - 根据其背后的颜色动态更改文本颜色(谷歌地图)

javascript - 单击事件时无法更新文本

javascript - 如何在菜单单击时运行 JavaScript 代码

jquery - 不允许我的 Jquery 代码执行的链接