如何搜索匹配两个属性的div?

时间:2015-05-20 16:40:50

标签: javascript jquery

我有一系列div个元素,其中包含" row"和属性data-date-monthdata-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()

3 个答案:

答案 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