4

我正在寻找一种在加载第一页之前利用 JQM 并覆盖内容的方法。

JQM 像这样初始化(来自最新的 JQM 代码):

( function( $, window, undefined ) {
    var $html = $( "html" ),
    $head = $( "head" ),
    $window = $( window );

    // trigger mobileinit event 
    $( window.document ).trigger( "mobileinit" );

    ... 

    $.extend($.mobile, {
        // find and enhance the pages in the dom and transition to the first page.
        initializePage: function() {

            ...
            // alert listeners that the pagecontainer has been determined for binding
            // to events triggered on it
            $window.trigger( "pagecontainercreate" );
            ...

所以我可以利用两个事件: mobileinitpagecontainercreate。我知道这从 HTML 中很容易,如下所示:

<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
    $( window ).bind( 'pagecontainercreate', function() {
        console.log("HELLO");
        });
</script>
<script type="text/javascript" src="jquery.mobile-1.1.0.multiview_con.js"></script>   
<script type="text/javascript" src="plugin.js"></script>

但是,如果我想从位于 JQM 之后的 INSIDE plugin.js 绑定到这些事件怎么办?如果我在 plugin.js 中放置相同的侦听器,它永远不会触发。我想,因为为时已晚。但是我需要防止默认加载第一页,所以一旦 JQM 尝试加载初始页面,对我来说就太晚了。

问题
在 JQM 之后的插件开始加载第一页之前,有什么方法可以监听其中一个事件或任何其他事件触发?

编辑
我不能使用pageinit,因为它会在调用第一页后触发。pageCreate 的同上,它也不会从插件内部触发。

4

1 回答 1

1

好的。我使用 JQMsautoinitialize选项(请参见此处)将其解决为 false,如下所示:

$(document).bind("mobileinit", function(){
$.mobile.autoInitializePage = false;
});

这样 Jquery Mobile 不会自动启动,但只有当我像这样手动调用它时:

 if ( $.mobile.autoInitializePage == false){
    $.mobile.initializePage();
    }

我已将最后一个片段放在我的第二个插件中,它需要在 JQM 触发第一页初始化之前完全设置。设置第二个插件后,我打电话initializePage(),一切正常。

于 2012-08-28T07:54:58.003 回答