jQuery Mobile + requirejs:随机触发pagebeforecreate事件

时间:2014-10-22 20:14:44

标签: javascript jquery jquery-mobile requirejs

我需要一些帮助!

我编写了一个调试库,它将在每个jQuery Mobile页面标题中注入一个按钮。我正在使用一个HTML文件,里面有多个jQuery Mobile页面,如下所示:

<!DOCTYPE html>
<html>
  <head>
    <title>TuBa GameS</title>   
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- CSS stylesheets -->
    <!-- Font Awesome CSS -->
    <link rel="stylesheet" type="text/css" href="font-awesome/css/font-awesome.min.css" />

    <!-- jQuery Mobile CSS -->
    <link rel="stylesheet" type="text/css" href="css/jquerymobile/jquerymobile.css" />

    <!-- RequireJS, load main script -->
    <script data-main="js/app/index.js" src="js/require.js"></script>

  </head>

<body>
<!-- ================== [ Page: #splash ] ================== -->
  <div data-role="page" id="splash">
    <div data-role="header" data-position="fixed">
      <h2>TuBa GameS</h2>
   </div>
   <div data-role="content">
     <ul data-role="listview">
         <li><a href="#userpass">TEST Page in DOM: #userpass</a></li>   
     </ul> 
   </div> <!-- END: content -->
 </div> <!-- END: page #splash -->

<!-- ================== [ Page: #userpass ] ================== -->

    <div data-role="page" id="userpass">
      <div data-role="header" data-position="fixed">
        <h2>TuBa GameS</h2>
      </div>
      <div data-role="content">
        <p>Page: index.html#userpass</p>
      </div> <!-- END: content -->
    </div> <!-- END: page #userpass -->
  </body>
</html>

我使用requirejs,然后编写&#34;标题按钮注入&#34; jQuery Mobile&#34; pagebeforecreate&#34;中的代码,所以我在每个data-role =&#34; page&#34;中添加了按钮之前的按钮。

问题是&#34; pagebeforecreate&#34;事件是随机发射的:有时它根本不会发射,有时它只会被发射,而且可以被发射#34;页面,有时是两页......我认为这是与requirejs和依赖关系顺序相关的问题。

这是debug requirejs模块的代码:

define ( ['jquery', 'jquerymobile'], // Modules required

function ($) {

/* We add the debug button to header (left side) of every JQM page
 * BEFORE being enhaced
 */
console.log("Number of JQM pages in DOM: " + $("[data-role='page']").length);

$("[data-role='page']").each ( function (index) { 

    $(this).on( "pagebeforecreate", function( event, ui ) {

        var pageid = $(this).attr("id");

        console.log("JQM page id=[" + pageid + "] is going to be enhaced!");

    }); // END: pagebeforecreate event

}); // END: JQMpages.each

}); // END: requireJS module

抱歉我的英语不好,我是西班牙人,我担心我的英语不是很好。我希望你能帮我解决这个问题。先谢谢你们!你太棒了!

0 个答案:

没有答案