我有一系列div
个元素,其中包含" row"和属性data-date-month
和data-date-day
。
我希望计算其属性与今天和月份匹配的班级row
的元素数量。
据我所知,搜索与月份匹配的所有div
元素如下:
function calculateStats(){
var d = new Date();
var tmon = d.getMonth() + 1;
var tday = d.getDate();
var numMatches = $('div.row[data-date-month="' + tmon + '"]').length;
}
我理解如何实现这一目标的唯一方法是使用$.each()
:
var numMatches = 0;
$('div.row[data-date-month="' + tmon + '"]').each(function(){
if ($(this).attr('data-date-day') == tday)
numMatches++;
});
然而,当可能有数百个元素需要扫描时,这是一个非常密集的功能。
如何有效搜索以找到与当天匹配的元素,或者我是否必须使用$.each()
?
答案 0 :(得分:4)
您可以使用两个属性选择器,如下所示:
var numMatches = $('div.row[data-date-month="' + tmon + '"][data-date-day="' + tday + '"]').length;
或者,您可以使用filter()
:
var numMatches = $('div.row').filter(function() {
var $el = $(this);
return $el.data('date-month') == tmon && $el.data('date-day') == tday;
}).length;
答案 1 :(得分:0)
尝试使用jQuery .filter()
方法:
var numMatches = $('div.row').filter(function() {
return $(this).data('date-month') == tmon && $(this).data('date-day') == tday;
}).length;
答案 2 :(得分:0)
你可以使用.length来计算元素
$(".row[data-date-month = '" + tmon + "'][data-date-day = '" + tday + "']").length