我開發了一些成果的一個javascript過濾,並有一定的困難..
這裏的問題是...
假設我們有一些標準的邏輯問題,尋求一種算法
- Manufacter (Trusardi,卡爾文KEIN,阿瑪尼......)
- 顏色(紅,藍,黑......)
- OtherFeatures(GORETEX,等等,等等...)
每個功能顯示爲複選框...
問題是我想禁用複選框,如果它的選擇將導致沒有結果..例如阿瑪尼的產品可能只有藍色,所以檢查阿瑪尼應該禁用黑色和紅色,但其他manufactors不應該被禁止......作爲檢查他們應該提供一個結果...
這裏是到目前爲止的代碼
results = $("#products li");
results.hide();
var filtersGroup = $("#filters li.filtersGroup");
$("#filters li.filtersGroup a").removeClass("disabled");
filtersGroup.each(function(index) {
var classes = "";
$(this).find("a.checked").each(function(index) {
classes = classes + "." + $(this).attr("id") + ",";
});
if (classes == "") return true;
results = results.filter(classes.substr(0, classes.length - 1));
//periorismos
filtersGroup.not($(this)).each(function(index) {
$(this).find("a").each(function(index) {
if (results.filter("." + $(this).attr("id")).length <= 0) {
$(this).removeClass("checked").addClass("disabled");
}
});
});
});
雖然它過濾他們成功,失效總不是正確的。例如重現問題,如果你選擇所有的製造商,然後選擇一種顏色製造商將被禁用,但顏色不是在第一次..
我想一個解決方案是創建多個結果,將模擬所有下一個可能的檢查(如果16個特徵和4個檢查意味着12個可能的其他檢查..
但我認爲這種方法很糟糕......任何其他想法?