2011-12-09 13 views
2

私は、要素で、そして随時フィルタリングする必要がある場合があります。ほとんど動作します。データで要素をフィルタリングする=属性

ユーザーが選択できる色のリストがあります。複数の色を選択できます。各要素には、これらの属性の1つ以上を割り当てることができます。

属性例: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"> 

私は、フィルタ()を使用して、/非表示を表示するためにこれをやっている:私の知る限りとして(何が起こっているのか、基本的に

$.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(); 
     } 
    }); 

を見ることができます)は、要素を表示/非表示にする要素を1つ選択するときです。複数選択する場合は、適切な順序で選択する限り、適切に表示/非表示になります。おそらくここでは正規表現のいくつかの並べ替えを知っているが、私はそれが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

私はそれが簡単な修正となることを知っていたし、$ .eachにa.selectedを指摘してくれてありがとう。ラインをカットするニース:) –

関連する問題