Как правило, когда вы инициализируете (улучшаете) страницу один раз, вы затем обновляете ее, а не пытаетесь инициализировать ее снова.
Я не пытался улучшить целую страницу сразу, я обычно вызываю метод обновления каждого виджета:
$('#my-listview-id').listview('refresh');
Так что, возможно, вы можете сделать это и для функции page()
:
$('#my-page-id').page('refresh');
Обновление
Я нашел это в документах для динамически создаваемых страниц (http://jquerymobile.com/demos/1.0/docs/pages/page-dynamic.html):
// Pages are lazily enhanced. We call page() on the page
// element to make sure it is always enhanced before we
// attempt to enhance the listview markup we just injected.
// Subsequent calls to page() are ignored since a page/widget
// can only be enhanced once.
Обновление
Так что вы делаете там, переписывая все стили jQuery Mobile, но вам не обязательно это делать. Используя инструменты разработчика, проверьте структуру HTML инициализированного виджета заголовка (или любого другого виджета, который вы хотите обновить). Структура HTML будет другой, и вы сможете настраивать определенные элементы для обновления таких вещей, как: текст, значки, тени и т. Д.
Вот пример виджета jQuery Mobile Header после инициализации:
<div data-role="header" data-theme="f" class="ui-header ui-bar-f" role="banner">
<h1 class="ui-title" tabindex="0" role="heading" aria-level="1">Content formatting</h1>
<a href="../../" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home ui-btn ui-btn-up-f ui-btn-icon-notext ui-btn-corner-all ui-shadow" title="Home" data-theme="f">
<span class="ui-btn-inner ui-btn-corner-all" aria-hidden="true">
<span class="ui-btn-text">Home</span>
<span class="ui-icon ui-icon-home ui-icon-shadow"></span>
</span>
</a>
</div>
Обратите внимание, что если вы хотите обновить значок кнопки или ее текст, вы можете настроить таргетинг на .ui-icon
или .ui-btn-text
внутри виджета Button: $('.ui-header').children('.ui-btn').find('.ui-text').text('my new button text')
.