Отфильтрованный список мобильных устройств jQuery медленен: на iPhone 3GS добавлено 150 элементов - PullRequest
1 голос
/ 03 апреля 2012

Я использую отфильтрованный список jQuery Mobile:

http://jquerymobile.com/demos/1.0.1/docs/lists/lists-search.html

На моем ПК он работает нормально, но на моем iPhone 3GS он довольно медленный.Между вводом буквы и фильтруемым списком задержка составляет около половины секунды.У меня есть 150 пунктов для фильтрации, по некоторым поискам, кажется, это должно быть обработано нормально.Так я просто нереалистичен с такой скоростью, как идентификатор ответа, или что-то не так?

Фильтр найдет символы, даже если слово не начинается с них.Таким образом, ввод 'ar' найдет 'Paris'Это не обязательно для моего приложения, я рад, что элементы будут возвращены, только если они начинаются с буквы, с которой начинается фильтр.Можно ли отключить эту функцию, и, вероятно, я смогу заметить заметное улучшение производительности?

Ответы [ 2 ]

1 голос
/ 17 мая 2012

Я еще не нашел обходной путь к медленной панели поиска фильтра, однако, если вы удалите все якорные теги и роли из списка UL LI, это удалит сотни привязок, которые замедляют загрузку страницы и переходы. Затем вам нужно добавить функцию:



    // should be defined in your body onload method, or pageinit
    $("li").on("click", function(event) {
    // determine your URI here you want to load
    // ...
        $.mobile.changePage(uri);
    }; // if list dividers exist, add code to ignore them, or get page load error.

Обновление: согласно документам, если добавить в mobileinit следующее, подстрока поиска применяется к началу искомых слов:



    $.mobile.listview.prototype.options.filterCallback = function( text, searchValue ) {
        return text.toLowerCase().substring( 0, searchValue.length ) !== searchValue;
    };

Примечание: это все еще не ускоряет панель поиска полностью. Удар по backspace особенно медленный из-за мгновенного поиска и обновления DOM. Я не вижу хука API, чтобы исправить это (пока?) ... это может потребовать модификации библиотеки.

В сторону: валидатор кода в stackoverflow слишком требователен, поэтому я пропустил детали, такие как явный код mobileinit ...


Обновление: если вы переходите к CSS3-переходам и у вас возникают проблемы, рассмотрите следующее ...

Если вы столкнулись с артефактами рендеринга на iOS из-за того, что механизм рендеринга мозаичного изображения графического процессора не выполняет синхронизацию после перехода, может помочь следующее:



    <style type="text/css">
      html, body { -webkit-transform: translateZ(0); }
    </style>

0 голосов
/ 11 мая 2012

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

...