使用复选框的同位素过滤问题
Isotope filtering using checkboxes issue
我正在尝试过滤同位素以解决问题,但我被卡住了。
我有两个复选框过滤器列表,其中每个列表都有一个清除列表按钮,以便取消选中其列表中的复选框和一个清除所有按钮,该按钮取消选中所有复选框并在单击时执行同位素({过滤器:'*' }),这是需要的。
我的问题是,当单击清除列表按钮时,我无法弄清楚如何制作清除列表按钮来同位素网格容器。从逻辑上讲,网格容器必须在没有特定列表值的情况下同位素。当使用清除列表按钮清除所有列表时,网格应同位素({过滤器:"*"})
这是我的js代码
function initIsotope(){
var $wrapper = $('.wrapper');
if($wrapper.length < 1){
return;
}
var $filters = $('.filters', $wrapper);
var $grid = $('.grid-container', $wrapper);
var $checkboxList = $ ('.checkbox-list', $wrapper);
var $checkboxes = $('.checkbox-control', $wrapper);
var $clearList = $('.clear-list', $wrapper);
var $clearAll= $('.clear-all', $wrapper);
//init Isotope
$grid.isotope({
itemSelector: '.grid-item',
layoutMode: 'fitRows'
});
//isotope filtering on checkbox click
// this part of code is from http://jsfiddle.net/desandro/DQydj/
$checkboxes.change(function(){
var filters = [];
// get checked checkboxes values
$checkboxes.filter(':checked').each(function(){
filters.push( this.value );
});
filters = filters.join(', ');
$grid.isotope({ filter: filters });
});
//clear list
$clearList.on('click', function(e){
e.preventDefault();
var $self = $(this);
$self.closest($checkboxList).find($checkboxes).prop("checked", false);
//Im stuck here
});
//clear-all lists
$clearAll.on('click',function(e){
e.preventDefault();
$checkboxes.prop("checked", false);
$grid.isotope({ filter: '*' });
});
}
$(function(){
initIsotope();
});
有jsfiddle示例供您查看:https://jsfiddle.net/timosergio/at7gtc1g/35/
你能帮帮我吗?
PS:我已经更新了我的jsFiddle,我更接近但想要的结果。如果您介意,请查看一下
清除
正确的closest($checkboxList)
后,您的$clearList.on('click')
中唯一缺少的是"重置"过滤器数组...并用其他复选框列表的可能值"重新填充"它。
// Empty filter array
var filters = [];
// get checked checkboxes values
$checkboxes.filter(':checked').each(function(){
filters.push( this.value );
});
filters = filters.join(', ');
$grid.isotope({ filter: filters });
就像您在函数$checkboxes.change
中所做的那样...
您将值数组发送到 grid.isotope 以用作过滤器。
你已经在$clearAll.on('click')
做正确的事情您正在发送'*'
.
编辑
我刚刚更新了我的小提琴,通过避免冗余代码来简化脚本。
我用获取复选框值的部分创建了一个"子函数"。
;)
更新的小提琴
其他SO读者注意:"同位素"是一个很酷的js库。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有可能过滤来自嵌入式YouTube的声音吗
- 过滤observableArray时出现问题
- 返回列表的函数 - 过滤输出时出现问题
- Angularjs ng-repeat按一个属性过滤,属性重复问题
- jquery和JavaScript过滤问题
- 使用 github js api:无法过滤问题
- 在页面问题上过滤 HTML 元素
- 语法问题.淘汰赛.用于过滤
- 挖空和选择器的数组过滤问题
- Github oauth过滤掉已禁用问题的repo
- 剑道网格过滤/层次问题
- 在dc.js柱状图上的颜色问题,当过滤到一个狭窄的范围
- Symfony2过滤结果- ajax请求的问题
- 如果服务器不过滤jsonp的回调参数,是否存在安全问题?
- 显示所选项目的过滤问题
- Ionic应用中的angularJS过滤问题
- 过滤逻辑问题jQuery
- 使用复选框的同位素过滤问题
- D3.js问题过滤topojson数据