Элементы фильтрации Jquery, проблема скорости при увеличении элементов

Я составил таблицу, но использую <div>s вместо <tr>s и <td>s. вот пример:

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

1) да. Переместите все данные в структуры дней JavaScript, выполните фильтрацию там, а затем синхронизируйте, чтобы DOM отражал результат с помощью jQuery.

mzedeler 02.03.2019 21:49

2) да, но если вы используете (1) выше, это, вероятно, не потребуется.

mzedeler 02.03.2019 21:50

@mzedeler, не могли бы вы предоставить коды, пожалуйста?

user10877666 02.03.2019 21:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
36
0

Другие вопросы по теме