【问题标题】:mobile-pagecontainer: not working移动页面容器:不工作
【发布时间】:2014-11-10 00:35:32
【问题描述】:

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

谢谢。

【问题讨论】:

标签: events jquery-mobile jquery-mobile-pageshow


【解决方案1】:

$(":mobile-pagecontainer") 是一个选择器,它引用所有页面的包装器,内部或外部。默认情况下,body:mobile-pagecontainer.pagecontainer() 是一个小部件,用于发出 jQuery Mobile 的特殊事件并用于导航。

jQuery Mobile events 冒泡到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 */
          }
});

【讨论】:

  • 谢谢。它的工作原理是用 $(function () { $(":mobile-pagecontainer").on(...)});但为什么? $(":mobile-pagecontainer") 默认为 $("body"),并且已经在 DOM 中可用。
  • @Dave 即使它在 DOM 中可用,body 或任何其他选择器也需要包装在另一个函数中才能激活它。在 jQM 中,使用 pagecreatd 附加监听器,例如clickchangd 等对于 pageContainer 事件,将它们绑定到 document,因为它们可以被委托。编辑:我使用.ready() 绑定页面容器事件一次,因为.ready() 每个文档触发一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多