jQuery Mobile - pageinit и pagecreate запускаются только один раз - PullRequest
3 голосов
/ 25 ноября 2011

Я работаю над своим первым проектом jQuery Mobile и столкнулся с препятствием.Я использую версию 1.0, и пока проект очень прост, три страницы со скриптом только по индексу.Сначала я неверно использовал $(document).ready(function() { ... });, а затем прочитал в документации, что нужно сделать привязку pageinit или pagecreate.Вот сценарий, с которым я работаю в целях тестирования (прямо из документации):

$("#main").live('pageinit', function(event) {
        alert( 'This page was just enhanced by jQuery Mobile!' );
});

Я пробовал это как внешний файл JS, так и сценарий в #main DIV, как было предложенов некоторых старых темах я нашел здесь.Это работает, когда индекс загружается в первый раз, но когда пользователь переходит на другую страницу и затем возвращается (возвращается), он не запускается снова.

Чего мне не хватает?

Ответы [ 3 ]

20 голосов
/ 26 ноября 2011

pageshow будет срабатывать при каждом показе страницы, либо при начальной загрузке страницы, либо когда пользователь уходит, а затем возвращается на эту страницу.

Вот пример использования pageshow для запуска кода при каждом просмотре страницы: http://jsfiddle.net/jasper/DHeva/ (обратите внимание, что этот код запускается непосредственно перед закрывающим тегом </body> и не инкапсулирован в функции $(document.ready(function () {...});).

Вот ссылка на документацию для jQuery Mobile Events (которая четко объясняет, когда запускается каждое из них): http://jquerymobile.com/demos/1.0/docs/api/events.html (примерно на полпути вниз по странице запускаются page события).

2 голосов
/ 28 ноября 2011

Я лично использую событие pageinit только для назначения обработчиков событий для пользовательского интерфейса (это происходит только один раз, когда он фактически создается) и pagebeforeshow для обновления пользовательского интерфейса - то есть обновления данных, времени обновления и т. Д. Это последнее событие будет называться КАЖДЫЙ ВРЕМЯ, пользователь переключается на эту страницу (.changepage () или ссылкой или перезагрузкой браузера).

0 голосов
/ 25 ноября 2011

pageinit срабатывает только при первой загрузке страницы.Страница индекса никогда не выгружается (даже если вы переходите в другое место), поэтому она никогда не будет вызывать это событие.

Попробуйте событие pagechange, которое срабатывает при каждом изменении страницы.

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