Работаю с таблицами, хочу сделать небольшой плагин чтоб не морочиться в дальнейшем, я только учусь. Что я делаю не так? Все работает кроме самого фильтрования. Если прописать для каждого select-а в столбце код функции add_filters(), то он заработает, когда через функцию для всех select - ничего не работает, не реагирует на изменения.
$(function() {
var $table = $("#table_isp").tablework();
});
(function( $ ){
$.fn.tablework = function() {
var $table = $(this);
// Определяем сколько строк в таблице
var $rows = $table.find('tbody > tr').length;
// Определяем сколько столбцов в таблице
var $cols = $table.find('tbody >tr:first>td').length;
// Добавляем строку в начало таблицы для select
$table.find('thead').prepend("<tr></tr>");
// Добавляем select-ы в шапку таблицы
function add_select ($v) {
for( var $i = 0; $i < $v; $i++) {
$table.find('thead >tr:first').append("<td><select id='"+$i+$i+"'></select></td>");
}
}
// Заполняем select-ы данными
function in_select ($v) {
for( var $i = 0; $i < $v; $i++) {
var sel_num = $i;
$table.find('tbody tr').each(function(){
$(this).children('td').each(function(td_num){
if(td_num==sel_num){
var text_td = $(this).text();
$("#"+sel_num+sel_num).append("<option>"+text_td+"</option>");
}
});
});
// Удаляем похожие строки
$("#"+sel_num+sel_num+" option").each(function() {
var text_option = $(this).text();
var options = $('option');
var alf = $(this); var i = -1;
options.each(function() {
if ( ($(this).text() == alf.text() )&& (++i>0) ) alf.remove()
})
});
}
}
// Добавляем первые пустые option вselect-ы
function add_optionfalse ($v) {
for( var $i = 0; $i < $v; $i++) {
$("#"+$i+$i).prepend("<option></option>");
}
}
// Добавляем фильтрацию по select-ам
function add_filters ($v) {
for( var $i = 0; $i < $v; $i++) {
// Добавляем фильтрацию
var filter = $("#"+sel_num+sel_num);
filter.change(function(e) {
var niddle = $(this).val();
$table.find("tbody> tr").filter(function() {
if (!$(this).find("td:eq("+sel_num+")").is(':contains("' + niddle + '")')) {
return true;
}
else {
$(this).show();
return false;
}
}).hide();
});
}
}
add_select ($cols);
in_select ($cols);
add_optionfalse ($cols);
add_filters ($cols);
};
})( jQuery );