クラスに応じて要素をフィルタリングする簡単な方法に取り組んでいます。ユーザーがチェックボックスをオンにすると、jQuery は問題なく動作し、クラスに応じて要素をオフにします。要素をオフにする行と、要素の外観は次のとおりです。
$('#ItemList div:not(.' + Filter + ')').hide();
<div class="1 2 3">asdf</div>
ただし、クラス属性の代わりに data-xxxx 属性を使用してこれを実行できるようにしたいのですが、実際にこの方法で要素を選択するのに問題があります。私が持っているものは以下です:
$("#ItemList div:not([data-filter'" + Filter + "'])").hide();
<div data-filter="1 2 3">asdf</div>
では、クラスの代わりに data-filter 属性を使用して要素を選択するにはどうすればよいでしょうか? ここで見つけた方法は私にはうまくいきません! どうもありがとう。
アップデート
わかりましたので、James Allardice の返信がうまくいきました。しかし、元の投稿でおそらく言ったはずの別の問題が発生しました。
各 data-xxxx 属性には多数の値を指定できます。値のいずれかが表示された場合に要素が非表示にならないようにするには、このフィルターが機能する必要があります。
$('#Filters input').change(function()
{
$('#ItemList div').show();
$('input').each(function()
{
var Checked;
if(Checked = $(this).attr('checked'))
{
var Filter = $(this).attr('data-filter');
$("#ItemList div:not([data-filter='" + Filter + "'])").hide();
};
});
<div data-filter="1">1</div>
<div data-filter="1 3">1 3</div>
たとえば、次の属性を持つチェックボックスがオンになっている場合、両方の div が表示されます。
data-filter="1"
しかし、属性がこのようなものである場合、2 番目のみが表示されます。
data-filter="3"