2013-01-10 21 views
6

這是關於用於過濾jQuery同位素itemselector的輸入複選框。jQuery同位素複選框過濾器,如果全部取消勾選顯示沒有項目

參考演示here,當頁面加載時檢查複選框。然而,我偶然發現這個問題,當用戶沒有選中時,它只會顯示所有的.items而不是一個空容器。

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

很多感謝,歡呼聲

回答

5

同位素庫是working as intended

filter - 使用與 選擇器匹配的顯示項目元素設置過濾器,並隱藏不匹配的元素。

值「*」或「」(空字符串):顯示所有item元素

如果不希望這種行爲,並且選擇每一個過濾器時,而不是想不顯示任何內容,你應該改變過濾器字符串是不存在的東西,例如

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

這樣就會有你想要的行爲。 I updated the fiddle.,並且它現在在選擇所有過濾器時隱藏所有元素。

+0

謝謝@Danack,爲工作的解決方案和解釋。 –

1

你可以簡單地這樣做:

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

哪裏default總是使用。看演示http://jsfiddle.net/G6LRL/

+0

謝謝! (順便說一句:有一個'在你的字符串的最後) –

相關問題