javascript – 搜索多个属性

我有一个搜索功能,可以很愉快地搜索列表div为一个数据属性,下面是正在工作的代码.

$(".classToSearch").each(function(){
    if ($(this).attr('data-attribute1').search(new RegExp(filter, "i")) < 0) {
        $(this).animate({opacity:0.1},100);
    } else {
        $(this).animate({opacity:0.5},100);
    }
});

我想要的搜索功能是能够搜索多个数据属性.我尝试了一系列不同的格式,但我无法让它工作.以下是我认为应该是这样的.

$(this).attr('data-attribute1','data-attribute2','data-attribute3')

要么

$(this).attr('data-attribute1'||'data-attribute2'||'data-attribute3')

但我想我将需要某种for循环.任何帮助,将不胜感激.

– – – – – 编辑 – – – – – – –

我的解决方案
这允许搜索框搜索所有数据属性.

$(".classToSearch").each(function(){
        if ($(this).attr('data-attribute1').search(new RegExp(filter, "i")) < 0 &&
            $(this).attr('data-attribute2').search(new RegExp(filter, "i")) < 0 &&
            $(this).attr('data-attribute3').search(new RegExp(filter, "i")) < 0 &&         
            ) {
            $(this).animate({opacity:0.1},100);
        } else {
            $(this).animate({opacity:0.5},100);
        }
    });

最佳答案 您可以使用.data()更轻松地访问这些属性,然后将它们收集到一个数组中,您可以从中执行每个属性的正则表达式测试:

var $this = $(this),
attribs = [$this.data('attribute1'), $this.data('attribute2'), $this.data('attribute3')],
re = new RegExp(filter, "i");

if (attribs.some(function() {
    return this.match(re);
})) {
    // some attributes matched the filter
} else {
    // no attributes matched the filter
}

另见:Array.some()

点赞