Как инициализировать страницы в jQuery mobile? Не показывать

Каков правильный способ инициализации объектов на мобильной странице jquery? События docs говорят, что используют « pageInit() » без примеров этой функции, но приводят примеры привязки к pageinit « pageinit » (разница в заметке). Однако на этой простой тестовой странице я вообще не вижу обстрелов событий:

     
test
$("#myPage").live('pageinit',function() { alert("This never happens"); });

Что мне не хватает? Я должен добавить, что если вы измените pageinit на другое событие, например pagecreate этот код работает.

—- ОБНОВИТЬ —-

Эта ошибка отмечена как «закрытая» в трекер JQM. По-видимому, мнения различаются по поводу того, работает ли это правильно или нет.

Он начал работать, когда я встроил скрипт в div страницы:

  

Используется jQuery Mobile 1.0RC1

.live() устарел, рекомендуется использовать .on() в jQuery 1.7+:

  

Проверьте онлайн-документ для получения дополнительной информации о .on() : http://api.jquery.com/on/

Оказывается, это ошибка в 1.0b3, которая исправлена ​​в текущей голове. Поэтому, если вы хотите исправить сейчас, вам нужно взять последнюю версию git . Или дождитесь следующего релиза.

 jQuery(document).live('pageinit',function(event){ centerHeaderDiv(); updateOrientation(); settingsMenu.init(); menu(); hideMenuPopupOnBodyClick(); }) 

Сейчас это работает. Теперь все переходы на страницы и все функции JQM AJAX будут работать вместе с вашими определенными функциями javascript! Наслаждайтесь!

pageinit не будет срабатывать, если он находится на вторичных страницах (НЕ ГЛАВНАЯ страница), если он написан в общем теге

У меня такая проблема - на вторичных страницах, которые не загружаются с помощью 'rel = "external", код в общем теге

действительно этот код всегда выполняется ...

  

если вы сделали «интерфейс с вкладками», лучше использовать «pagehow»

Мне пришлось поместить скрипт в раздел HTML-страницы, который для меня является ошибкой. Он загружается обычно в браузере (а не через AJAX) и все на одной странице, включая javascript. Мы не должны использовать документ.

Самый простой способ, с которым я столкнулся, это использовать JQM + Steal. Он работает как шарм, пока вы ставите:

  

Внутри data-role='page' div.

Затем используйте AJAX для подключения всего, что может использовать тот же mypage.js и использовать внешнюю ссылку (используя тег rel="external" ) на все, что требует другой страницы кражи.

@Wojciech Bańcer

Из документов jQuery:

 As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live(). 

Попробуй это:

 $('div.page').live('pageinit', function(e) { console.log("Event Fired"); }); 
 $(document).on("pageinit", "#myPage", function(event) { alert("This page was just enhanced by jQuery Mobile!"); }); 

События не запускаются на начальной странице, только на страницах, которые вы загружаете через Ajax. В приведенном выше случае вы можете просто:

  
Давайте будем гением компьютера.