포스트

Isotope.js에서 다중 필터 조합하기

기초 개념: Isotope.js 란?

Isotope.js는 웹페이지에 있는 아이템을 레이아웃하고 필터링할 수 있는 라이브러리입니다. 이 라이브러리를 사용하면 페이지에 있는 여러 요소들을 쉽게 정렬하거나 선택된 필터에 따라 표시할 수 있습니다.

문제 상황: 다중 필터 적용하기

StackOverflow에서는 “다중 필터를 어떻게 Isotope.js에 조합할 수 있나요?”라는 질문이 있었습니다. 이러한 상황은 여러 조건에 따라 아이템을 동시에 필터링해야 할 경우 발생합니다.

코드 오류: TypeError

원래 코드에서는 TypeError라는 오류가 발생했습니다. 이 오류는 자바스크립트에서 특정 변수나 함수가 예상되는 유형과 일치하지 않을 때 발생합니다.

해결 방법: 필터 함수 사용

다중 필터를 조합하려면 Isotope의 filter 메서드에서 콜백 함수를 사용해야 합니다. 이 콜백 함수에서는 아이템이 여러 필터 조건에 부합하는지 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var $grid = $('.grid').isotope({
  // 옵션 설정
});

// 필터 조건을 저장할 객체
var filters = {};

// 필터 버튼을 클릭했을 때
$('.filter-button-group').on('click', 'button', function() {
  var $this = $(this);
  // 필터 이름과 값 가져오기
  var filterGroup = $this.parents('.button-group').attr('data-filter-group');
  filters[filterGroup] = $this.attr('data-filter');
  
  // 다중 필터 조합
  var filterValue = concatValues(filters);
  
  // 필터 적용
  $grid.isotope({ filter: filterValue });
});

// 객체의 모든 값을 문자열로 조합
function concatValues(obj) {
  var value = '';
  for (var prop in obj) {
    value += obj[prop];
  }
  return value;
}

마무리: 다중 필터의 중요성

Isotope.js에서 다중 필터를 사용하면 사용자에게 더 복잡한 조건에 따른 유연한 결과를 제공할 수 있습니다. 이를 통해 사용자 경험이 향상되며, 웹사이트의 기능성도 높아집니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.