jQuery Mobile: складной не раскрывается в pageinit при возвращении с другой страницы - PullRequest
2 голосов
/ 21 октября 2011

В моем приложении jquery-mobile (1.0RC2) у меня есть две страницы: test1.html, test2.html

Первая страница, test1.html, включает в себя набор для складывания, где я раскрываю один элемент, который можно сверять, с помощью скрипта в прослушивателе событий pageinit (пробовал как pagehow, так и pageinit):

$('#page1').live( 'pageinit', initPage);
function initPage() {
    alert('initPage!');  // this line seems to be always getting executed
    $('#my_expandable').trigger('expand');  // ... but this line doesn't when coming back via a back link!
}

Это отлично работает при первом вызове страницы.

Тогда у меня есть ссылка, которая ведет меня на вторую страницу test2.html, а именно:

<script>
function goPage2(criteria) {
    $('#page1').die( 'pageinit', initPage);
    $.mobile.changePage( "test2.html", {reverse: false, reloadPage: true} );
}
</script>

<a href="javascript:goPage2('brand');" rel="external" class="ui-link-inherit" style="margin-top:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;">page 2</a>

Когда я возвращаюсь на первую страницу через

<script>
function goPage1() {
    $.mobile.changePage( "test1.html", { reverse: true, reloadPage: true} );
}
</script>
<a href="javascript:goPage1();" rel="external" class="ui-link-inherit">test</a>

выполняется только предупреждающее сообщение в прослушивателе событий pageinit test1.html, но разборная часть не раскрывается через

Вы можете увидеть образец в действии здесь: http://bit.ly/rr0dq3

Как воспроизвести проблему:

  • загрузить test1.html в http://bit.ly/rr0dq3
  • вы получите предупреждающее сообщение, и складная будет развернута
  • нажмите на кнопку «Перейти на страницу2» и вы попадете на вторую страницу test2.html
  • на этой второй странице, нажмите на серую кнопку 'test', и вы вернетесь на первую страницу test1.html
  • проблема сейчас: как вы можете видеть, команда оповещения о событии pageinit в test1.html выполняется, но расширение свертываемого не - почему бы и нет? Очевидно, что метод прослушивателя событий pageinit вводится правильно, но, похоже, здесь проблема только в сворачиваемом.

Я думаю, что это может быть ошибка (подал отчет здесь https://github.com/jquery/jquery-mobile/issues/2791),, но, возможно, у кого-то есть идея для этого.

Обход: И оповещение, и раскрывающееся раскрытие выполняются, когда я использую другой способ открыть вторую страницу test2.html, используя

window.location.href = "test2.html";

вместо

changePage(...);

Но это не очень приятно. Почему это не работает должным образом, если я использую способ вставки страницы? Я уже вызываю метод die (), когда открываю разные страницы, чтобы не зависать несколько слушателей событий pageinit.

1 Ответ

0 голосов
/ 21 октября 2011

Вы пытались использовать data-attribute для складных областей содержимого, которые увеличивают их загрузку:

data-collapsed="false"

Вот ссылка на документы для этого поведения: http://jquerymobile.com/demos/1.0rc2/docs/content/content-collapsible.html

...