2011-12-09 4 views
2

필자는 요소별로 필터링해야하는 경우가 있습니다. 거의 작동합니다.데이터 별 요소 필터링 = 속성

사용자가 선택할 수있는 색상 목록이 있습니다. 하나 이상의 색상을 선택할 수 있습니다. 각 요소에는 이러한 속성 중 하나 이상이 할당 될 수 있습니다.

특성 예 : 지금까지 내가 아니라 (

$.each($('.colorpicker a'), function() { 
    if ($(this).hasClass('selected')) { 
      $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').show(); 
     } else { 
      $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').hide(); 
     } 
    }); 

는 기본적으로 무슨 일이 일어나고 : JQuery와에

<div data-wotc-color="G"> 
<div data-wotc-color="B"> 
<div data-wotc-color="U"> 
<div data-wotc-color="UB"> 
<div data-wotc-color="U"> 
<div data-wotc-color="W"> 

내가이 일을 해요 필터를()를 사용하여/숨기기를 보여 볼 수 있음)는 요소를 표시하거나 숨기려면 하나의 요소를 선택하는 것입니다. 두 개 이상을 선택할 때 적절한 순서로 선택하면 올바르게 표시되거나 숨겨집니다. 일종의 정규식 아마 여기에 필요한 알고 있지만 완전히 JQuery를 사용하여 일어날 수 있도록 잘 모르겠습니다.

+1

그리고 당신의 문제는 무엇인가? http://jsfiddle.net 데모를 제공하십시오. –

답변

1

문제는 앵커는 보여주는 이미되었을 수도 요소 (합법적으로)의 일부를 숨기는 것이다.

대신, 모든 것을 숨긴 다음 선택한 색상에 대한 것들을 보여

// Hide EVERYTHING 
$('.pac').hide(); 

// Now show everything that matches: 
$('.colorpicker a.selected').each(function() { 
    $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').show(); 
}); 
+0

나는 그것이 간단한 수정이 될 것이라는 것을 알고 있었고 $. 라인을 잘 잘라 :) –