在jQuery中按类名获取可见元素的动态计数

Get dynamic count of visible elements by class name in jQuery

本文关键字:元素 动态 获取 jQuery      更新时间:2023-09-26

在链接的fiddle中,我在jQuery中设置了一个复选框过滤器,用于根据公司名称和职位筛选人员。我想要一个可见元素的总数,当元素显示/隐藏时,这些元素会动态变化。在fiddle中,我高亮显示了总元素计数,但当复选框被选中/取消选中时,它目前不会改变。我发现了几个类似的问题,但我还没能找到一种方法将这些建议实现到我的代码中,使计数动态化。如有任何帮助,我们将不胜感激。

http://jsfiddle.net/point71echo/fnzag0pp/6/

这是我正在使用的jQuery代码:

    $(function() {
        $('.peoples, .companies').on('click', function() {
            var checkedPeoples = $('.peoples:checked');
            var checkedCompanies = $('.companies:checked');
            if (checkedPeoples.length || checkedCompanies.length) {
                if (checkedCompanies.length === 0) {
                    $('.row > div').hide();
                    $.each(checkedPeoples, function() {
                        var prdId = $(this).attr('data-id');
                        $('.row > div[data-category="' + prdId + '"]').show();
                    });
                } else if (checkedPeoples.length === 0) {
                    $('.row > div').hide();
                    $.each(checkedCompanies, function() {
                        var brandId = $(this).attr('data-id');
                        $('.row > div[company="' + brandId + '"]').show();
                    });
                } else {
                    $('.row > div').hide();
                    $.each(checkedPeoples, function() {
                        var prdId = $(this).attr('data-id');
                        $.each(checkedCompanies, function() {
                            var brandId = $(this).attr('data-id');
                            $('.row > div[data-category="' + prdId + '"][company="' + brandId + '"]').show();
                        });
                    });
                }
            } else {
                $('.row > div').show();
            }
        });
    });
// Total count of elements (visible and invisible)...
var x = $('.people:visible').length;
$('#count').append( x );

这就像计算可见元素和更改事件处理程序底部的HTML一样简单

$('#count').html( $('.people:visible').length );

FIDDLE