2009-12-04 42 views
0

我正在使用過濾器腳本,我試圖改變jQuery的一點。jquery過濾器腳本幫助

(見演示這裏:http://www.askthecssguy.com/2009/03/checkbox_filters_with_jquery_1.html

現在,你已經看到了演示,你知道,一旦您取消一個盒子,它過濾掉與它那些標籤的結果。例如,如果您取消選擇「wordpress」標記,則包含該標記的所有項目都會被過濾並刪除。

但是,如果你有一個項目既「wordpress」和「ajax」標籤,然後unclicked wordpress複選框,該項目將消失。我希望該項目留下來,因爲它仍然有一個未經檢查的標記(ajax)。我只想要一個項目消失,如果他們的所有標籤已被取消選擇。有人可以看看jquery(下半部分),並告訴我在哪裏可以改變它,使其工作?

謝謝!

回答

0

的代碼被一種複雜的...我想我會轉移戰略,是這樣的:(輸入框的Click事件中)

// First get all the checked inputs 
var checkedValues = []; 
$("input.dynamicFilterInput:checked").each(function() { 
    checkedValues.push($(this).val()); 
}); 

// Now get all the filterable items 
$("ul.filterThis li").each(function() { 
    // If the item doesn't have a class that corresponds with one of the 
    // the checked items then hide it 
    var found = false; 
    for (var i=0; i<checkedValues.length; i++) { 
     if ($(this).hasClass(checkedValues[i])) { 
      found = true; 
      break; 
     } 
    } 
    if (!found) { 
     $(this).slideUp(); 
    } else { 
     $(this).slideDown(); 
    } 
}); 

所以基本上你每次重新計算項目的整個列表任何一個輸入都會改變。