2012-09-25 2 views
0

이전 질문의 단순화 된 버전. UI 멀티 셀렉터 위젯을 사용하여 클래스별로 제품을 필터링하고 있습니다. 클래스에 체크 된 체크 박스 값과 일치하는 값이 포함 된 경우에만 제품이 표시됩니다. 하나의 확인란 만 선택하면 쉽게 완료됩니다.클래스 이름이 배열에 포함되어있는 경우 클래스별로 div를 숨기는 필터

문서는 모든이를 사용하여 상자를 확인의 내가 값을 매핑 할 수 있습니다 말한다 :

var checkedValues = $("select").multiselect("getChecked").map(function(){ 
    return this.value; 
}).get(); 

어떻게 제외한 모든 제품을 숨길 수있는 클래스가 일치하는 배열에 적어도 하나 개의 값의 하나의? 그것은 가능한가? 이것은 작동하지 않습니다 :

$('.main article, .error').hide(); 
$('.main article[class*=' + checkedValues + ']).show(); 

답변

4

한 편리한 방법은 클래스 목록을 가지고 당신처럼 코드를 매우 쉽게 할 수

.class1, .class2, .class3, .etc 

의 형태로 CSS 선택기를 구성하는 것입니다 귀하의 예 및 Array.join :

var selector = $("select").multiselect("getChecked") 
       .map(function(){return "." + this.value; }) 
       .get() 
       .join(); 
그런 다음 jQuery를이 무거운 수행하도록 할 수 있습니다

:

$('.main article').filter(selector).show(); 
+0

클래스 배열을 사용하는 것보다 훨씬 깔끔합니다. – Blender

+0

나는 실제로 각기 다른 제품 카테고리를 가진 5 개의 다른 멀티 선택기를 가지고 있습니다. 제품에는 5 개의 클래스가 있습니다. 저는 jQuery를 처음 사용하지만 고전 [카테고리 1 선택] [카테고리 2 선택] [카테고리 3 선택] [GO !!] 형식의 양식을 만들려고 노력했습니다. 많은 전자 상거래 사이트에서 볼 수 있지만 모든 것을 시도하고 있습니다. 고객 입장에서. 어쩌면 내가 잘못된 용어를 사용하고 있지만 multiselector의 확인란 값이 클래스가 아닌 배열에 매핑됩니다. "제품에 배열의 체크 박스 값 중 하나와 일치하는 클래스가 있으면 표시하십시오."라는 문구가 필요합니다. ?? – Earl1234

+0

'this.value'가 일부 제품에있는 클래스 이름 인 경우 위의 내용이 작동해야합니다. 너 해봤 니? – Jon

관련 문제