Контейнер для мобильных страниц: не работает

$(":mobile-pagecontainer") не работает. Я должен использовать $(document), Что-то не так со следующим кодом?

    <div data-role="page" id="page1">

        <div data-role="header" >
            <h1>Page 1</h1>
        </div>

        <div role="main" class="ui-content">
            This is Page1.

            <a id="gotoPage2" href="#page2" class="ui-btn ui-corner-all ui-shadow ui-btn-a">Go to Page 2</a>

            <script>

            // not working
            $( ":mobile-pagecontainer").on( "pagecontainerhide", function( event, ui ) {
                alert( "page hide ");
            });

            // working
            $( document).on( "pagecontainerhide", function( event, ui ) {
                alert( "page hide " );
            });
           </script>
         </div>
    </page>

    <page  data-role="page" id="page2">
         ....
    </page>

Но это работает для изменения страницы следующим образом:

$(":mobile-pagecontainer").pagecontainer("change", "#page2", { } );

Благодарю.

1 ответ

Решение

$(":mobile-pagecontainer") это селектор, который относится к оболочке всех страниц, внутренних или внешних. По умолчанию body является :mobile-pagecontainer а также .pagecontainer() это виджет, используемый для отправки специальных событий jQuery Mobile и для навигации.

События jQuery Mobile достигают document так что вы можете использовать для захвата этих событий.

$(document).on("pagecontainershow", function (e, data) {
  console.log(data.toPage); /* current active page */
  console.log(data.prevPage); /* previous page */
});

Если вы хотите прикрепить события к pageconatiner, вы должны обернуть их в .ready() чтобы заставить их работать.

$(function () {
   $(":mobile-pagecontainer").on("pagecontainerhide", function (e, data) {
      console.log(data.toPage); /* page navigating to */
      console.log(data.prevPage); /* page that was just hidden */
   });
});

Можно также использовать виджет .pagecontainer(),

$(":mobile-pagecontainer").pagecontainer({
    hide: function (e, data) {
             /* code */
          },
    show: function (e, data) {
             /* code */
          }
});
Другие вопросы по тегам