0

抱歉,如果以前有人问过这个问题,但我似乎找不到简洁的答案,而且我是 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 并将数组一起推入一个新对象。

4

1 回答 1

0

为什么不使用业主提供的组合过滤器?它也有一个带有哈希历史的版本

http://isotope.metafizzy.co/tests/combo-sort-history.html

于 2013-08-14T16:00:27.593 回答