Ускорение инициализации автозаполнения jQuery

#jquery #jquery-ui #autocomplete #jquery-ui-autocomplete #performance

#jquery #jquery-пользовательский интерфейс #автозаполнение #jquery-пользовательский интерфейс-автозаполнение #Производительность

Вопрос:

Я использую несколько (более 100) полей автозаполнения на одной странице, все с одним и тем же источником данных, и заметил, что инициализация полей автозаполнения происходит немного медленно. Из некоторого профилирования, которое я сделал, похоже, что узким местом является создание меню ( this.menu = $( "<ul></ul>" ) и так далее в исходном коде).

Кажется излишним создавать отдельные меню для каждого поля автозаполнения, и поэтому мне было интересно, знает ли кто-нибудь способ ускорить эту инициализацию.

Я думал о том, чтобы заставить пользовательский интерфейс jQuery просто использовать одно и то же меню (или, предпочтительно, один и тот же объект автозаполнения) во всех полях ввода, но я не знаю, как это можно было бы сделать без изменения исходного кода плагина.

Комментарии:

1. Можете ли вы предоставить какой-нибудь jQuery и HTML-код?

Ответ №1:

Вы можете попробовать инициализировать поле автозаполнения только тогда, когда пользователь нажимает на поле

Комментарии:

1. 1 метод отложенной загрузки , часто очень хороший вариант.

Ответ №2:

У меня была такая же проблема, и я исправил ее, инициализировав автозаполнение при фокусировке:

 $(".complete").focus(function(){

    $(this).autocomplete({
        //your options  
    });

});
  

Поле с функцией автозаполнения требует, чтобы класс «complete» был отклонен от курса.