javascript - jQuery - 使用类属性过滤 <li>

标签 javascript jquery css string jquery-selectors

我有不同的复选框,它们 onclick 根据 li 的类过滤一组约 100 个 li 元素。

过滤器:

[ ] Rock Checkbox
[ ] Rap Checkbox
[ ] Punk Checkbox
[ ] Country Checkbox

<li class="rock rap punk">...</li>
<li class="rock country">...</li>

我的 javascript 如下所示:

$(document).ready(function(){
        $('.filter').click(function() {
            var attribute = this.name;
            if ($(this).is(':checked')) {
                $('#champion-list li').each(function(index) {
                    if(!$(this).hasClass(attribute))
                        $(this).hide();
                });
            } else {
                $('#champion-list li').each(function(index) {
                    if(!$(this).hasClass(attribute))
                        $(this).show();
                });
            }
        });
    });

因此,单击任何复选框时,它都会抓取名称并根据类别进行过滤。但是,这种方法非常慢。有更好的性能想法吗?

最佳答案

选择器是一个字符串,所以你可以动态构造它:

$("#champion-list li." + attribute).hide();

要选择li 元素没有类:

$("#champion-list li :not(." + attribute + ")").hide();

关于javascript - jQuery - 使用类属性过滤 <li>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10275621/

相关文章:

javascript - 从 api 获取的数据未显示

javascript - 混合 CSS 和 Javascript 事件处理程序

javascript - 解释: Math. fround()函数

php - 使用 PHP 和 AJAX 更新 MySQL 数据库

javascript - 在 Laravel 中是否有更简单的方法将数据从页面传递到模式?

javascript - 如何将html网页截屏并作为图像发送到邮件

jquery - 检测复选框状态变化

javascript - 关于更改 url 或加载 url 的 Jquery 问题

jquery - 如何使用 jQuery 取消设置元素的 CSS 属性?

jquery - 关于网络套接字更新的线程评论