javascript - jquery 带有类别的复选框过滤器

标签 javascript jquery html

我正在创建一个与 jsfiddle 演示类似的过滤器:http://jsfiddle.net/nJUb3/1/

当您在这个 fiddle 示例中检查红色和黄色时,它会显示包含这两种颜色的花朵。我尝试将其更改为以红色或黄色显示所有花朵。它要么返回到此状态,要么更改为在仅检查红色时显示仅红色花朵的位置,或仅在检查黄色时显示红色花朵(并且在检查黄色时忘记红色也与红色)。

$('.flowers-wrap,.planets-wrap').delegate('input[type=checkbox]', 'change', function() {
    var $lis = $('.flowers > div'),
        $checked = $('input:checked');
    if ($checked.length) {
        var selector = '';
        $($checked).each(function(index, element) {
            selector += "[data-category~='" + element.id + "']";
            alert(selector);
        });
        $lis.hide();
        $('.flowers > div').filter(selector).show();
    } else {
        $lis.show();
    }
});

我想要的是(红色或黄色)和(小,中,大)和(火星,金星)。如何更改这个 fiddle 示例以使其按照我想要的方式工作?谢谢。

最佳答案

当您迭代所有选中的元素时,您不需要创建一个选择器,只需使用每个选中的复选框的 element.id 即可显示。像这样的东西:

$('.flowers-wrap,.planets-wrap').delegate('input[type=checkbox]', 'change', function() {
    var $lis = $('.flowers > div'),
        $checked = $('input:checked');  
    if ($checked.length) {  
        $lis.hide(); 
        $($checked).each(function(index, element) {                     
            $("[data-category~='" + element.id + "']").show();                            
        });                                              
    } else {
        $lis.show();
    }
});

关于javascript - jquery 带有类别的复选框过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45254052/

相关文章:

javascript:;与 javascript:void(0); 比较

javascript - CKEDITOR.config.allowedContent true 不工作

javascript - Node 整数与对象中的函数范围?

javascript - 在 asp.net c# 中使用 jquery 进行 ckeditor 验证

javascript - 将 Thymeleaf 与 Google 图表和 Java map 结合使用

javascript - Ember 教程 - 向 router.js 添加新路由

javascript - 如何在 Node.js 和 TestCafe 不等待检查选择器是否不存在的情况下编写 if 条件

javascript - jQuery 切换设置显示为与初始设置不同的值

javascript - 如何通过 ajax 加载并验证网络上的 mp3 文件而不播放它?

javascript - HTML5离线认证