javascript - 使用 javascript 将多个过滤器类别应用于 <li>(s) 列表

标签 javascript jquery html css

我有这个 fiddle ,我想知道如何实现基于两个类别的过滤功能。当有人单击过滤器时,它应该从当前过滤器选择中获取值,隐藏列表并仅显示过滤器结果。关于如何实现此步骤的任何想法?任何帮助将不胜感激!!

<ul style='list-style-type: none;' class="filter1">
<li><span class="filtercat1">red</span>

</li>
<li><span class="filtercat1">blue</span>

</li>
<li><span class="filtercat1">yellow</span>

</li>
<li><span class="filtercat1">all</span>

</li>
</ul> <span id="filterbutton1">
    <a href="#" id="prev">« Previous</a> 
    <a href="#" id="next">Next »</a>

</span>

<ul style='list-style-type: none;' class="filter2">
<li><span class="filtercat2">orange</span>

</li>
<li><span class="filtercat2">apple</span>

</li>
<li><span class="filtercat2">papaya</span>

</li>
<li><span class="filtercat2">all</span>

</li>
</ul> <span id="filterbutton2">
    <a href="#" id="prev2">« Previous</a>
    <a href="#" id="next2">Next »</a>
</span>

<ul id='list'>
<li class="">red orange</li>
<li class="">red apple</li>
<li class="">red papaya</li>
<li class="">blue orange</li>
<li class="">blue apple</li>
<li class="">blue papaya</li>
<li class="">yellow orange</li>
<li class="">yellow apple</li>
<li class="">yellow papaya</li>
</ul>
<span id="filterbutton">
    <a href="#" id="filter"> filter</a>

<span id="resetbutton">
    <a href="#" id="reset"> reset</a>

$(function () {
    var all = $('.filtercat1').addClass("passiv");

    var i = -1;

    $('#prev' ).click(function () {
        ctrlbutton(i = !i ? all.length - 1 : --i);
    });
    $('#next').click(function () {
        ctrlbutton(i = ++i % all.length);
    }).click();

    function ctrlbutton(ele) {
        all.removeClass("active").addClass("passiv");
        all.eq(ele).removeClass("passiv").addClass("active");
    }


})

$(function () {
    var all = $('.filtercat2').addClass("passiv");

    var i = -1;

    $('#prev2').click(function () {
        ctrlbutton(i = !i ? all.length - 1 : --i);
    });
    $('#next2').click(function () {
        ctrlbutton(i = ++i % all.length);
    }).click();

    function ctrlbutton(ele) {
        all.removeClass("active").addClass("passiv");
        all.eq(ele).removeClass("passiv").addClass("active");
    }


})

fiddle :http://jsfiddle.net/BlacBunny/5tfcuy1w/

最佳答案

使用此代码

$("#list").find("li").each(function(){
    this.className = "all "+this.innerHTML;
});
    $("#filter").click(function(){
        var class1 = $(".filter1").find(".active").text();
        var class2 = $(".filter2").find(".active").text();
        $("#list").find("li").addClass("passiv").end().find("."+class1+"."+class2)
        .removeClass("passiv").addClass("active");
    });
    $("#reset").click(function(){
        $("#list").find("li").addClass("active").removeClass("passiv");
    });

我没有优化这段代码。您使用了两次 dom 就绪函数,这实际上不是必需的。

你可以看到 fiddle here

关于javascript - 使用 javascript 将多个过滤器类别应用于 <li>(s) 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25323674/

相关文章:

javascript - Ember.js、set() 和计算属性

javascript - 如何在 AngularJS 中异步填充 $scope 变量?

javascript - 在提交表单之前删除密码中的所有空格

javascript - 减少代码行

javascript - 如何指定多个&&和|| javascript中if语句的条件?

javascript - 获取 SectionList 项的索引 React-Native

javascript - onclick,点击不起作用? jQuery

javascript - 如何在 Javascript 中创建带有图像的旋转轮?

javascript - 如何在显示后消失警报 div

css - 没有 javascript 的 Android 和 iPhone 的不同 css