사용자가 보유한 각 필터 유형에 대한 배열 차원이있는 다차원 배열이 필요합니다. 이전에 해본 적이 있고 라이브 데모 예 here이 있습니다!
here을 참조하십시오! js를 위해. 내 JS에서
은 (필터)
function getComboFilter(filters) {
var i = 0;
var comboFilters = [];
var message = [];
for (var prop in filters) {
message.push(filters[ prop ].join(' '));
var filterGroup = filters[ prop ];
// skip to next filter group if it doesn't have any values
if (!filterGroup.length) {
continue;
}
if (i === 0) {
// copy to new array
comboFilters = filterGroup.slice(0);
}
else {
var filterSelectors = [];
// copy to fresh array
var groupCombo = comboFilters.slice(0); // [ A, B ]
// merge filter Groups
for (var k=0, len3 = filterGroup.length; k < len3; k++) {
for (var j=0, len2 = groupCombo.length; j < len2; j++) {
filterSelectors.push(groupCombo[j] + filterGroup[k]); // [ 1, 2 ]
}
}
// apply filter selectors to combo filters for next group
comboFilters = filterSelectors;
}
i++;
}
comboFilters.sort();
var comboFilter = comboFilters.join(', ');
return comboFilter;
}
이 기능은 밀어 접합을 모두 처리하고 사용하지만 필터 배열의 다양한 세트의 분류 최종 기능이라고 getComboFilters에 관심이있을 수 있습니다 파일
$container.isotope({ filter: '.ccskills' });
이상 : :
당신이 필터 방식이 별도 번 호출하는 것 때문에 당신이 잘 나는 일상적인 말을하지만 정말 루틴 ... 필터 루틴에 추가해야
$container.isotope({filter: .industry});
모든 필터 유형을 함께 사용하면 모든 필터 유형이 서로에 대해 알아야 할 것입니다. 즉, 동일한 자바 스크립트 인클로저에 있어야하며 필터 메소드는 호출 만하면됩니다. 한번은 모든 필터 유형 조건에 대해 테스트됩니다.
var $container = $('#library');
var comboFilter = getComboFilter(filters);
$container.isotope({ filter: comboFilter });
// This next part targets all the possible filter items
// i.e. '.option-set a' just like your example
$('.option-set a').click(function(){
// exit directly if filter already disabled
if ($(this).hasClass('disabled')){
return false;
}
var $this = $(this);
var $optionSet = $(this).parents('.option-set');
group = $optionSet.attr('data-filter-group');
// store filter value in object
var filterGroup = filters[ group ];
if (!filterGroup) {
filterGroup = filters[ group ] = [];
}
var comboFilter = getComboFilter(filters);
$container.isotope({ filter: comboFilter });
});
function getComboFilter(filters) {
var i = 0;
var comboFilters = [];
var message = [];
for (var prop in filters) {
message.push(filters[ prop ].join(' '));
var filterGroup = filters[ prop ];
// skip to next filter group if it doesn't have any values
if (!filterGroup.length) {
continue;
}
if (i === 0) {
// copy to new array
comboFilters = filterGroup.slice(0);
}
else {
var filterSelectors = [];
// copy to fresh array
var groupCombo = comboFilters.slice(0); // [ A, B ]
// merge filter Groups
for (var k=0, len3 = filterGroup.length; k < len3; k++) {
for (var j=0, len2 = groupCombo.length; j < len2; j++) {
filterSelectors.push(groupCombo[j] + filterGroup[k]); // [ 1, 2 ]
}
}
// apply filter selectors to combo filters for next group
comboFilters = filterSelectors;
}
i++;
}
comboFilters.sort();
var comboFilter = comboFilters.join(', ');
return comboFilter;
}
희망이 :
var $container = $('#library');
var comboFilter = getComboFilter(filters);
$container.isotope({ filter: comboFilter });
마지막으로, 파일에 완전한 통합이 같은 somethign 될 것이다 다음 getComboFilter (필터)를 사용하여
는이 같은 조합 필터 메소드를 호출 기능 누군가를 돕는다! 데모는 꽤 매끄럽다.
사용자는 두 가지 작업을 동시에 수행 할 수 없으므로 그렇게 할 수 없습니다. 그렇지 않으면 전역 변수를 사용하여 데이터를 수집하고 배열 병합 [r] 또는 그와 비슷한 것을 사용하십시오. – Val
감사합니다. 필터를 두 개의 별도 작업으로 결합하고자합니다. 필터 조합을 함께 실행해야합니다. 그렇지 않으면 나는 현재 가지고있는 것을 끝내게됩니다. 이것은 이전의 것을 대체하는 마지막 행동입니다! 나는 너에게 병합을 제안 해 줄 것이다. – BellamyStudio
내가 생각한 것 (다소 어리석은 생각!) - 각 기능에서 '기타'목록을 확인하고 업데이트중인 필터를 추가합니다. 같은 :..'\t $ ("# 업계 드롭 다운") 선택()의 변화 ( \t \t 기능() { \t \t \t VAR 산업 = $ ("옵션 : 선택"이).val(); \t \t \t var publisher = $ optionSets.find ('a.selected'). attr ('data-option-value'); \t \t \t $ container.isotope ({filter : industry + publisher}); \t \t} \t는) – BellamyStudio