jQuery Produkt-Filterung auf mehreren Kategorien mit Hilfe von Checkboxen

Diese Frage ist eine weitere Entwicklung dieser Frage:

jQuery einfache checkbox zum ein-und ausblenden von divs (Produktfilter) die beantwortet wurde hervorragend von ManseUK

ManseUK Lösung fähiges Produkt gefiltert nach einer Kategorie, die speziell Genres, aber für mein Aktuelles Projekt brauche ich, um zu Sortieren nach 2 Kategorien: Farbe und Größe. Durch ändern ManseUK die Lösung, die ich fast das es funktioniert, aber es funktioniert nicht, wenn ich zwei Filter ausgewählt - in diesem Beispiel durch die Auswahl von 'Türkis' und 'xl' sollte nur zeigen die xl-cyan, sondern es zeigt die beiden Cyan, anstatt nur die xl-cyan. Der code, den ich verwende ist wie folgt:

HTML:

<input type="checkbox" id="cyan" value="cyan" /> Cyan<br />
<input type="checkbox" id="magenta" value="magenta" /> Magenta<br />
<input type="checkbox" id="black" value="black" /> Black<br />
<input type="checkbox" id="xl" value="xl" /> XL<br />

<!--------------------->
<div class="products">
    <div class="productItem" data-price="250" data-category="cyan">
        Cyan Ink
        <div class="productItemPrice"><span>&pound;250</span></div>
    </div>
    <div class="productItem" data-price="150" data-category="magenta">
        Magenta Ink
        <div class="productItemPrice"><span>&pound;150</span></div>
    </div>
    <div class="productItem" data-price="250" data-category="black">
        Black Ink        <div class="productItemPrice"><span>&pound;250</span></div>
    </div>
    <div class="productItem" data-price="241" data-category="cyan" data-size="xl">
        XL Cyan Ink
        <div class="productItemPrice"><span>&pound;241</span></div>
    </div>
</div>
<!--------------------->

CSS:

.productItem{float:left;padding:5px;margin:5px;border:1px solid #eaeaea}
body{font-family:verdana}

JS:

$('input[type="checkbox"]').click(function() {
    if ($('input[type="checkbox"]:checked').length > 0) {
        $('.products >div').hide();
        $('input[type="checkbox"]:checked').each(function() {
            $('.products >div[data-category=' + this.id + ']').show();
            $('.products >div[data-size=' + this.id + ']').show();
        });
    } else {
        $('.products >div').show();
    }
});​

JSFIDDLE der obige code

Kann ich sehen, dass die js ist die Durchführung einer logischen ODER auf die divs zu zeigen - wie kann ich diese ein UND?

InformationsquelleAutor RayZor | 2012-11-08

Schreibe einen Kommentar