使用ul li的jQuery过滤器列表

时间:2017-09-01 17:50:44

标签: jquery drop-down-menu filter filtering

我使用select下拉列表有一个过滤器列表。但由于缺乏样式选项,我宁愿将其切换为ul。但是我很难这样做。

这是我使用

的jQuery
$("select.filterby").change(function(){
    var filters = $.map($("select.filterby").toArray(), function(e){
        return $(e).val();
    }).join(".");
    $("div#FilterContainer").find("div").hide();
    $("div#FilterContainer").find("div." + filters).show();
});

我尝试将select.filter更改为常规div类,但我可以使用值函数.val

查看它的映射

理想情况下,我希望它是:

<ul class="filterby">
    <li class="all">Show All</li>
    <li class="one">One</li>
    <li class="two">Two</li>
    <li class="three">Three</li>
</ul>

但我无法在li上使用值标记。有没有人就解决这个问题的最佳方法得到任何建议?

这是一个工作小提琴:http://jsfiddle.net/6PrQW/329/

1 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。就个人而言,我喜欢为具有隐藏值的HTML元素设置数据属性。使用data-*属性。

我更新了您的代码,使其与UL一起使用。 http://jsfiddle.net/47703Lcd/3/

<ul class="filterby">
    <li data-filter="all" class="all">Show All</li>
    <li data-filter="1"class="one">One</li>
    <li data-filter="2"class="two">Two</li>
    <li data-filter="3" class="three">Three</li>
</ul>

JS:

$("ul.filterby li").click(function(){
    var filters = $(this).data("filter");
    $("div#FilterContainer").find("div").hide();
    $("div#FilterContainer").find("div." + filters).show();
});