Фильтрующие элементы Jquery, проблема скорости при увеличении элементов - PullRequest
0 голосов
/ 02 марта 2019

Я создал таблицу, но я использую <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 прервать операцию и начать новую, когда я нажимаю кнопку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...