抱歉,如果以前有人问过这个问题,但我似乎找不到简洁的答案,而且我是 jQuery 中一个相当轻量级的开发人员。
我有一堆对象,其中包含各种标签作为类,包括颜色和日期作为长格式数字:
<div class="red sysdate20110712"></div>
<div class="blue sysdate20110712"></div>
<div class="blue sysdate20120314"></div>
<div class="red sysdate20110712"></div>
<div class="yellow sysdate20100813"></div>
<div class="red sysdate20100813"></div>
<div class="yellow sysdate20121001"></div>
<div class="blue sysdate20121001"></div>
我想做的是为用户构建功能,先按颜色过滤,然后按日期范围过滤,例如:
开始日期:2010 年 3 月 10 日,结束日期:2013 年 8 月 23 日,颜色 = 蓝色和红色。
经过一番研究,我有一个日期范围作为这篇文章的修改。我最终希望将最小和最大日期链接到滑块。
var minDate = 20120101;
var maxDate = 20130813;
var dateValue = [];
dateValue = $('.color-shape').filter(function(index){
var $this = $(this);
var matcharr = $this.attr('class').match(/sysdate([0-9]*)/);
if (matcharr) {
var date = parseInt(matcharr[1]);
return ((date >= minDate) && (date <= maxDate));
} else {
return false;
}
});
此外,我使用复选框通过组合过滤器方法过滤了颜色属性:
$checkboxes.change(function(){
var filters = [];
// get checked checkboxes values
$checkboxes.filter(':checked').each(function(){
filters.push( this.value );
});
filters = filters.join(', ');
$container.isotope({ filter: filters });
});
我的问题是,我如何(如果有的话)将这两个元素结合起来?由于需要将对象传递给过滤器,有没有办法组合对象,或者可能运行两部分过滤器?
如果答案就在我面前,我深表歉意,因为我对 jQuery 有点陌生。
更新:在朋友的帮助下,我解决了一些问题!基本上它涉及创建第三个 var 并将数组一起推入一个新对象。