同位素范围和附加组合滤波器

时间:2013-08-14 03:41:19

标签: jquery range filtering combinations jquery-isotope

如果以前曾经问过这个问题,请道歉,但我似乎无法找到简明的答案,而且我在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>

我想要做的是为用户构建功能,首先按颜色过滤,然后按日期范围过滤,例如:

日期开始日期:10.3.2010,日期结束:8.23.2013,颜色=蓝色和红色。

经过一些研究,我有一个日期范围作为修改from this post。我最终希望将最小和最大日期链接到滑块。

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并将数组推送到一个新对象。

1 个答案:

答案 0 :(得分:0)

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

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