1

$(":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", { } );

谢谢。

4

1 回答 1

3

$(":mobile-pagecontainer")是一个选择器,它引用所有页面的包装器,内部或外部。默认情况下bodyis:mobile-pagecontainer.pagecontainer()is 一个小部件,用于发出 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 */
          }
});
于 2014-11-10T01:01:58.123 回答