【发布时间】:2014-11-08 16:26:35
【问题描述】:
在链接的小提琴中,我在 jQuery 中设置了一个复选框过滤器,以按公司名称和职位过滤人员。我希望在元素显示/隐藏时动态变化的可见元素的总数。在小提琴中,我突出显示了总元素计数,但是当复选框被选中/取消选中时,它当前不会改变。我发现了几个类似的问题,但我无法找到一种方法将这些建议实施到我的代码中以使计数动态化。任何帮助将不胜感激。
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 );
【问题讨论】:
-
你有 2 个“人”类,最后一个有一个“s”......我想这是一个错字? (在一个挑剔的音符上,“people”已经是复数了,不需要“s”;-)
-
至于动态问题,您的复选框(和/或任何显示/隐藏它们)上的简单更改事件处理程序可以快速重新计算。
标签: javascript jquery