Я создал таблицу, но я использую <div>
с вместо <tr>
с и <td>
с.Вот пример:
<div class="tbl tbl1">
<div class="thead">
<div class="tr">
<div class="td colTitle" style="width: 120px"><span>Title</span></div>
<div class="td colLink" style="width: 190px"><span>Link</span></div>
<div class="td colSize numeric" style="width: 75px"><span>Size(MB)</span></div>
<div class="td colUploadDate" style="width: 75px"><span>UploadDate</span></div>
<div class="td colOpen" style="width: 50px; max-width: 50px;"><span>Show</span></div>
</div>
<div class="tr">
<div class="td colTitle">
<input type="text" class="Filter" />
</div>
<div class="td colLink">
<input type="text" class="Filter" />
</div>
<div class="td colSize">
<input type="text" class="Filter" />
</div>
<div class="td colUploadDate">
<input type="text" class="Filter" />
</div>
<div class="td colOpen">
</div>
</div>
</div>
<div class="tbody">
</div>
</div>
Я заполню tbody
часть операциями на стороне сервера.
Я использую приведенные ниже коды для фильтрации своих строк на основе значений, введенных во входные данные фильтра.
$(".Filter").on('input', function () {
filterGrid();
$(".rowCount").val($(".tbody .tr:visible").length);
});
function filterGrid() {
$('.tbody .tr').each(function () {
var v = 1;
var x = $(this);
$(".thead .Filter[value!='']").each(function () {
var i = $(this).parent(".td").index();
if (x.children(".td:eq(" + i + ")").html().indexOf($(this).val()) != -1) {
v = v * 1;
} else {
v = 0;
return false;
}
});
if (v == 1) {
x.show();
} else {
x.hide();
}
});
}
Мой код работает нормально, когда у меня несколько строк, но когда количество загруженных строк увеличивается, для выполнения операции фильтрации требуется больше времени.Теперь у меня есть два вопроса:
1 - можно ли оптимизировать мою функцию фильтра для более быстрой работы?
2 - при вводе первой буквы я не могу ввести вторую букву до концафильтрации по первой букве.я могу заставить javascript прервать операцию и начать новую, когда я нажимаю кнопку?