2013-01-10 3 views
6

Dies ist in Bezug auf die Eingabe-Checkbox für die Filterung jQuery Isotop itemselector.jQuery Isotop Checkbox Filter, wenn alle deaktivieren Sie zeigen keine Artikel

Siehe Demo here, Checkboxen werden überprüft, wenn die Seite geladen wird. Allerdings stolpere ich über das Problem, wenn alles vom Benutzer deaktiviert ist, es werden nur alle .items anstelle eines leeren Containers angezeigt.

$checkboxes.change(function(){ 
    var filters = []; 
    // get checked checkboxes values     
    $checkboxes.filter(':checked').each(function(){ 
    filters.push(this.value); 
    }); 
    // ['.red', '.blue'] -> '.red, .blue' 
    filters = filters.join(', '); 
    $container.isotope({ filter: filters }); 
}); 

Vielen Dank im Voraus, prost

Antwort

5

Das Isotop Bibliothek ist working as intended.

Filter - Einen Filter mit Elementelementen festlegen, die mit dem Selektor übereinstimmen, und Elemente ausblenden, die nicht übereinstimmen.

Werte ‚*‘ oder ‚‘ (eine leere Zeichenkette): Zeigt alle Artikel Elemente

Wenn Sie dieses Verhalten nicht wünschen, und stattdessen wollen keine Elemente zeigen, wenn jeder Filter ausgewählt , sollten Sie die Filterzeichenfolge ändern, um etwas zu sein, das nicht existiert, zB

if(filters.length == 0){ 
    filters = 'purplemonkyeydishwasher'; 
} 
else{ 
    filters = filters.join(', '); 
} 
$container.isotope({ filter: filters }); 

Dies wird dann das gewünschte Verhalten haben. I updated the fiddle. und es blendet nun alle Elemente aus, wenn alle Filter ausgewählt sind.

+0

danke @Danack, für die Arbeitslösung und Erklärung. –

1

Sie können dies einfach tun:

$container.isotope({ filter: (filters == null || filters.length == 0) ? 'default' : filters });` 

Wo default immer ungenutzt ist. Sehen Sie die Demo http://jsfiddle.net/G6LRL/

+0

DANKE! (Übrigens: da ist ein 'am Ende deiner Saite) –

Verwandte Themen