Доступ к содержимому страницы jQuery Mobile (под) с помощью JavaScript - PullRequest
3 голосов
/ 11 февраля 2011

Я пробовал многие "стандартные" функции DOM JavaScript для доступа к элементам в HTML-документе (getElementById, getElementsByName и т. Д.), Но я не могу заставить его работать с jQuery Mobile - когда подстраница загружена, значения, возвращаемые из getElementById("elementOfInterest").innerHTML, все еще содержат значение из главной страницы.

Я пытаюсь реализовать это в приложении для iPhone, чтобы извлечь и отобразить заголовки соответствующих подстраниц на панели навигации (страница отображается в UIWebView), но я думаю (и надеюсь), что проблема и решение является более или менее «независимым от платформы».

У кого-нибудь есть мысли о том, как этого добиться с помощью JavaScript (или, возможно, какой-то функции jQuery)? Я не смог найти ничего в jQuery Mobile Docs.

1 Ответ

2 голосов
/ 26 февраля 2011

Согласно стандартному поведению конфигурации jQuery Mobile , он будет автоматически обрабатывать щелчки по ссылкам и формировать представления через Ajax, когда это возможно. Поэтому, когда вы открываете новую страницу (подстраницу), новая страница будет добавлена ​​в DOM главной страницы. За это время вы теряете JavaScript, написанный на новой странице.

По моему мнению, вы можете отключить форму Ajax и ссылку.

Для этого напишите ссылку следующим образом:

<a href="createForm.htm" data-role="button" data-ajax="false">Create</a>

Вы также можете сделать это для всех ссылок, переопределив конфигурацию по умолчанию:

<script src="/js/jquerymobile/jquery-1.5.min.js"></script>
<script type="text/javascript">
    $(document).bind("mobileinit", function(){
        $.mobile.ajaxEnabled= false;
    });
</script>
<link rel="stylesheet" href="/css/jquerymobile/jquery.mobile-1.0a3.min.css" />
<script src="/js/jquerymobile/jquery.mobile-1.0a3.min.js"></script>

В обоих случаях, боль в том, что вы потеряете сгенерированную рамкой кнопку возврата!

Подробнее на: http://jquerymobile.com/demos/1.0a3/#page.html&subpageidentifier

Edit:

Чтобы добавить кнопку возврата на новую страницу, вы можете поставить ее вручную, например:

<div data-role="header">
    <a href="../list.htm" data-icon="arrow-l" data-ajax="false">Back</a>
    <h1>
        List items
    </h1>
</div>
...