Есть несколько способов сделать это.Самым простым будет небольшое изменение структуры таблицы, так как нам нужен способ поиска groupid в таблице.Что вы можете сделать, это просто добавить класс в ячейки, которые содержат groupid, например:
<tr>
<td>1</td>
<td>Jack</td>
<td class='groupId'>1</td>
</tr>
Затем вы напишите свой javascript, похожий на другие ответы, за исключением того, что вам не нужно будет использовать негибкие методы, такие как nth-child(3)
или eq(-1)
.Это сделало бы javascript более гибким для изменения.
В итоге вы могли бы получить что-то вроде этого:
function hideRows(){
// find selected value (get only the first as multi-selected is not required)
var selected = $('#groups option:selected')[0].value;
// walk through all cells that have the groupId class
$('#myTable td.groupId').each(function(){
// get current cell
var currentCell = $(this);
// get the cells groupid
var groupid = currentCell.text();
// determine if it the group id matches the selected value and hide/show
if(groupid !== selected){
currentCell.parent().hide();
}
else{
currentCell.parent().show();
}
});
}
// wire-up select change event
$('#groups').change(hideRows);
Без какого-либо способа изолировать ячейки groupid в таблице, вам придется прибегнуть к помощи.к одному из вышеупомянутых методов, чтобы получить правильный столбец.
JSFiddle - http://jsfiddle.net/GFzcp/5/