#jquery #jquery-mobile
#jquery #jquery-mobile
Вопрос:
Когда я загружаю начальную страницу, $(document).ready()
функция работает просто отлично.
Однако, когда я предварительно выбираю ссылку на страницу, которую хочу загрузить из соображений производительности пользовательского интерфейса, на этой странице не запускается метод document ready.
Кто-нибудь еще сталкивался с этим? Есть предложения?
Моя следующая мысль — просто объединить две страницы в одну, но я бы предпочел хранить их отдельно.
Комментарии:
1. как выполняется предварительная выборка?
2. В jQuery Mobile есть метод предварительной выборки, который я вызываю. $.mobile.loadPage(url, { showLoadMsg: false });
3. Срабатывает ли событие $ (window).load()?
4. Нет. Если бы я хотел угадать, я бы сказал, что jQuery mobile выполняет вызов ajax для извлечения страницы и ввода ее в DOM, поэтому я также не смог запустить $ (window).load().
5. jQuery mobile анализирует только то, что находится в теле выбранной страницы.
Ответ №1:
Вы не должны использовать $(document).ready()
функцию для страниц jquery mobile из-за предварительной выборки.
В документе jQuery Doc теперь выделен этот часто задаваемый вопрос в документации по событиям.
Вы должны настроить свой обработчик событий с помощью pageinit
события.
Пример из документа:
$( '#aboutPage' ).live( 'pageinit',function(event){
alert( 'This page was just enhanced by jQuery Mobile!' );
});
Также будьте осторожны — из-за загрузки AJAX используемые вами скрипты должны загружаться на первой странице, а действия для других страниц должны обрабатываться обработчиками событий.