基于多个类的过滤列表u

时间:2015-03-16 20:16:26

标签: javascript jquery arrays filtering

我尝试基于从数组中选择的多个类来.show().hide()某些li个元素。

以下是我正在使用的HTML的示例:

<div class="category-list">
  <ul class="light" id="category-menu">
    <li id="client-x"><a class="work-item" onclick="toggleContent('client-x')">Client X</a></li>
    <li id="client-y"><a class="work-item" onclick="toggleContent('client-y')">Client Y</a></li>
  </ul>
</div>

我打电话的功能:

function toggleContent(id) {
  jQuery(document).ready(function($) {
    var ez = document.getElementsByClassName(id);
    var cats = [];    
    var items = window.localStorage.getItem('items');

if (items === null || items.length === 0) {  
    cats.push(id);
    $(".port-project").hide(); 
    localStorage.setItem("items", JSON.stringify(cats));
    $(ez).closest(".port-project").show();
} else {
    cats = JSON.parse(localStorage.getItem("items"));       
            if (cats.indexOf(id) > -1) {
                for(var i = 0; i < cats.length; i++){                       
                    if (cats[i] === id){
                    cats.splice(i, 1);
                    localStorage.setItem("items", JSON.stringify(cats));
                    //$(ez).closest(".port-project").hide();
                    }   
                }           
            } else {                
                cats.push(id);
                localStorage.setItem("items", JSON.stringify(cats));
                //$(ez).closest(".port-project").show();
            }   
    }
$(".port-project").filter(JSON.parse(localStorage.getItem('items'))).show();
}

所以我试图做的是将一组类存储在一个数组中,然后存储在localStroage中。当有人点击过滤器时,我想根据localStorage中存储的项目显示或隐藏.port-projects,但只显示该项目中包含所有项目的项目(可通过JSON.parse / JSON.stringify访问)。第二个if / else仅根据类是否已存在来添加或删除类。

我已经阅读了无数的帖子,并且我尝试使用.filter功能来检查localStorage,但我认为我已经搞砸了这个过程。有什么想法吗?

非常感谢这位新手。

0 个答案:

没有答案