Dopo aver provato varie soluzioni trovate qui e sul resto del web, non riesco a capire la logica per farlo in modo "semplice" (o farlo funzionare del tutto).Come posso filtrare un elenco con più valori usando jQuery e CSS?
Ho la seguente lista:
<ul class="store-list">
<li data-categories="Bags Shoes Accessories Belts">
<h3 itemprop="name">Enzo Poli</h3>
</li>
<li data-categories="Womenswear Shoes">
<h3 itemprop="name">Ilse Jacobsen</h3>
</li>
<li data-categories="Menswear Womenswear Shoes Ties">
<h3 itemprop="name">Kiman (Shoes Ties)</h3>
</li>
<li data-categories="Menswear Womenswear Shoes Knitwear">
<h3 itemprop="name">Riccovero</h3>
</li>
</ul>
<button class="a">Ties</button>
<button class="b">Ties & Shoes</button>
<button class="c">Menswear</button>
Ho provato con Attribute Not Equal Selector, ma che sicuramente non funziona.
var stores = $('.store-list');
$('button.b').on('click', function(){
stores.find('li[data-categories!="Ties"][data-categories!="Shoes"]').fadeOut();
});
Un altro problema è quando seleziono una categoria diversa, gli elementi nascosti non vengono visualizzati.
So che posso usare $.each()
e passare attraverso ogni elemento e utilizzare un sacco di codice per vedere se contiene la categoria e controllare se è visibile o meno. Ma speravo solo che ci sarebbe stata un'alternativa migliore e più semplice.
Quindi la Q è; Come posso mostrare/nascondere le voci dell'elenco in base a quali filtri seleziono?
See my fiddle here.
è atteso risultato per visualizzare un solo elemento 'li' a scatto di' button'? – guest271314
No.Ho circa 13 categorie. Se seleziono 3 categorie, verranno mostrati tutti gli articoli con queste categorie. Tutto il resto dovrebbe essere nascosto. – Steven
Prova a utilizzare '.filter()'; anche se potrebbe sostituire l'elemento 'data- *' a 'button' per testare con' button' '.innerHTML' – guest271314