2011-11-28 50 views
0

我有一個表格,其中有四個下拉列表,每列表中有X個值;jQuery表格選擇更改過濾器表

主體,類型,月,地點

然後我有多個行的表從數據庫中抽取具有完全相同的列標題。

主體,類型,月,地點

數據的每一行都是不同的。

我想建立一個過濾器系統,其中,$(select).change功能進來,建立值從所有選定的下拉列表中的陣列,然後applys jquery的hide/show功能無論它相對應。該錶行已階級分配給他們的動態例如:

<tr class="subjectVal typeVal monthVal locationVal"><td>lorem ipsum</td>...</tr> 

目前我有:

$("form select").change(function() { 

    var values = [];   
    $("form select").each(function() { 
     if ($(this).val() != "Please select...") { 
      values.push($(this).val()); 
     } 
    }); 

    $("table.events tr.row").each(function() { 
     tr = $(this); 
     $.each(values, function(index, item){ 
      if (!$(tr).hasClass(item)) { 
       $(tr).hide(); 

      } else { 
       $(tr).show(); 
      } 
     }); 

    }); 

}); 

但這如果值數組包含多個項目,僅該項目是過濾表。如果我選擇一個主題,然後選擇一個位置,它將始終顯示所有這些位置,而不管我選擇了哪個主題。

回答

1

所以基本上它應該只顯示行如果所有的值匹配?如果是這樣,那麼這個代碼應該工作:

$("table.events tr.row").each(function() { 
    var tr = $(this), show = true; 
    $.each(values, function(index, item){ 
     if (!tr.hasClass(item)) { 
      show = false; 
     } 
    }); 
    tr.toggle(show); 
}); 
+0

完美,謝謝。 – digiwig