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

标签 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()

最佳答案

你可以使用两个属性选择器,像这样:

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;

关于javascript - 如何搜索匹配两个属性的div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30355647/

相关文章:

javascript - 如何组合数组中相同的字符串?

javascript - 让我的搜索表单触发 JQuery Ajax 请求

javascript - Storybook:如何根据全局变量更新 i18 语言环境

告诉视频从一秒而不是零开始的 JavaScript

jQuery 图像不淡入

javascript - node.js async.maplimit() 将额外参数传递给处理函数

javascript - 计算数组中相同值的个数

jquery - 通过ajax ping web 服务

Jquery UI 选项卡禁用

javascript - 如何在 angularjs 中集成 jQuery 函数?