javascript и jQuery для мобильных устройств: перейдите к ‹div data-role=page›‹/div›

Я относительно новичок в jQuery Mobile. Итак, я не знаю каждого уголка возможностей фреймворка.

В настоящее время я сталкиваюсь с некоторыми проблемами с историей и динамической навигацией по страницам.

В принципе, я хочу добиться следующего:

У меня есть веб-страница, которая меняет содержимое нажатием кнопки. «Домашняя» страница должна отображать <div data-role="page" id="list_root">...</div>. Нажав кнопку, страница должна перейти к <div data-role="page" id="list_123">...</div>. Я хочу иметь возможность вернуться к содержимому div "#list_root" с помощью кнопки "Назад".

До использования jQuery я реализовал это самостоятельно с помощью history.pushState(divContent, null, "#list_<id>") и заменил старый контент новым. Однако плагин pushState деактивирован по умолчанию с помощью jQuery mobile.

Кнопка, которая нажимается для навигации, определяется следующим образом:

<a href='#list_<id>' class='...'>...</a> 

Я попытался реализовать создание нового содержимого div (для list_), реализовав обратный вызов для «onhashchange». Но это событие никогда не вызывается.

Кроме того, если бы я мог создать содержимое при нажатии на ссылку, я хотел бы показать содержимое <div id="list_<id>">, заменив предыдущее содержимое.

Поскольку приложение представляет массовые данные, я не хотел использовать вложенный список мобильных телефонов jQuery.

Есть ли у вас какие-либо подсказки для меня, как я могу реализовать это, используя функциональность фреймворка?

ИЗМЕНИТЬ:

У меня следующая ситуация:

<div data-role="page" class="type-interior" id="main_window">
    <div id="current" class="ui-content" data-role="content" role="main">
        <div id="list_root" data-url="list_root">
        <div id="list_123" data-url="list_123" data-role="page">
    </div>
</div>

Как вы видите, «list_root» является «стартовой страницей» по умолчанию и отображается так, как предполагалось.

Я добавил прослушиватель событий для click() для динамического создания содержимого <div id="list_123"> через:

document.addEventListener('click', function(e) {
       ... create it ...
       e.stopPropagation();
   }, true)

Это работает.

Кнопка создается следующим образом:

<a href="#list_123" data-role="button">List_123</a>

Содержимое div успешно создано, и после этого хэш в URL изменится на #list_123. Но страница не отображается. Проблема в том, что <div data-role="page" id="list_123">...</div> стоит внутри тега <div data-role="page" class="type-interior" id="main_window">? Я попробую это дальше!


person Sebastian B.    schedule 06.07.2012    source источник
comment
Я действительно не понимаю, что вы пытаетесь сделать здесь, возможно, будет полезен еще один код или почему бы не jsfiddle?   -  person Hessius    schedule 07.07.2012


Ответы (2)


Это просто.
Используйте href для перехода на любую страницу, например

<a href='#pageId' data-role="button>Page 2</a>

И чтобы вернуться, используйте data-rel='back'

<a href="javascript:;" data-role="button" data-rel="back">Back</a>

Демонстрация: http://jsfiddle.net/nachiket/5rLAf/

person Nachiket    schedule 07.07.2012
comment
Да, я пробовал то же самое (как уже было сказано выше). Я отредактировал вопросы с примером кода! - person Sebastian B.; 09.07.2012

как указано выше - проблема, с которой я столкнулся, заключалась в том, что новая страница, на которую вы хотите перейти, всегда должна находиться внутри тегов <div data-role='page'><div data-role='content'>....</div></div> и дочернего элемента тега body.

Теперь он работает нормально!

Спасибо!

person Sebastian B.    schedule 09.07.2012