Я пытался заставить это работать 4 дня, но безуспешно.
У меня очень простое мобильное приложение jquery.
Приложение имеет заголовок, контент и нижний колонтитул.
Нижний колонтитул генерируется динамически в событии pagecreate, потому что он всегда один и тот же, и я не хочу, чтобы его HTML был на каждой странице.
Итак, я делаю что-то вроде этого:
$(document).delegate('[data-role="page"]', 'pagecreate', function (e) {
DrawHeader($(this));
DrawFooter($(this));
SetFooterEvents($(this));
SetActiveFooter($(this));
});
DrawHeader () и DrawFooter () просто подготавливают div заголовка к странице и добавляют div нижнего колонтитула.
SetFooterEvents () устанавливает события onclick кнопок навигационной панели нижнего колонтитула, а SetActiveFooter () ПРЕДЛОЖЕН для установки ui-btn-active для текущей активной ссылки нижнего колонтитула.
Для этого я добавил атрибут data-active-footer к странице div, а атрибут data-name - к элементам панели навигации. Я ищу текущий элемент в соответствии с data-active-footer на странице и применяю класс ui-btn-active.
function SetActiveFooter(page) {
page.children('div[data-role="footer"]')
.find('a[data-name="' + page
.attr("data-active-footer") + '"]').addClass("ui-btn-active");}
Пока все хорошо.
Теперь, скажем, я перешел на страницу, и навигационная панель горит (она успешно получила класс ui-btn-active), и я нажимаю на предыдущую страницу, освещенный элемент в навигационной панели не меняется обратно!
Если я нажимаю на страницу еще раз (то есть: меняю на вторую страницу [загорелся индикатор), снова переключаюсь на первую страницу [вторая страница все еще горит], затем снова нажимаю на первую страницу), она загорается кнопка панели навигации .
Я обнаружил, что jqm также изменил панель навигации предыдущей страницы, когда я меняю панель навигации текущей страницы в событии 'pagecreate'.
Я пытался переписать это поведение, используя событие «pageshow», то есть пытаясь применить класс ui-btn-active к текущему элементу в панели навигации, но проблема в том, что объекты $ (this) и e.currentTarget в Событие 'PageShow' НЕ СОДЕРЖИТ ЭЛЕМЕНТ ФУТБОЛА !!!
$(".ui-page").live('pageshow', function (e) {
alert($(this).children('div').length); // returns 2!
alert($(this).children('div[data-role="footer"]').length); //returns 0
alert($(e.currentTarget).children('div').length); // returns 2!
alert($(e.currentTarget).children('div[data-role="footer"]').length); //returns 0});
Есть идеи?!
Спасибо.