jQuery Mobile Error - 无法调用未定义的方法'trigger'

时间:2011-07-29 14:27:13

标签: jquery jquery-mobile

我在jQuery Mobile中收到以下错误消息:

无法调用undefined

的方法'trigger'

在jQuery.mobile.js中的第2836行,如下所示:

mpc.trigger( "beforechangepage" );

我的代码如下所示:

         

<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.mobile.js"></script>
    <script type="text/javascript" src="js/app.js"></script>

    <title></title>
</head>

<body>
<!-- Application -->
<div data-role="page" id="application" data-theme="f" >

    <div data-role="header">
        <h1>header</h1>                     
    </div><!-- /header -->

    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
        <li><a href="#" data-icon="arrow-r">test1</a></li>
        <li><a href="#" data-icon="arrow-r">test2</a></li>
            <li><a href="#" data-icon="arrow-r">test3</a></li>
        </ul>
    </div><!-- /content -->

    <div data-role="footer">
        <h1>footer</h1>
    </div>

</div><!-- /page -->


<!-- Login -->
<div data-role="page" id="login" data-theme="f">

    <div data-role="header">
        <h1>header</h1>
    </div><!-- /header -->

    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
        <li><a href="#" data-icon="arrow-r">test1</a></li>
        <li><a href="#" data-icon="arrow-r">test2</a></li>
            <li><a href="#" data-icon="arrow-r">test3</a></li>
        </ul>
    </div><!-- /content -->

    <div data-role="footer">
        <h1>footer</h1>
    </div><!-- /content -->

</div><!-- /page -->

在app.js中,我有以下代码:

$(document).ready(
    function () {
        $.mobile.changePage( $('#login') );
})

我得到的只是一个空白的白色屏幕和我上面提到的错误。

任何帮助表示感谢。

此致

1 个答案:

答案 0 :(得分:3)

我在OS X上的Safari中测试我的移动网站时遇到了类似的情况。要解决这个问题,我必须绑定到pagecreate事件,而不是仅依靠$(document).ready()。在我尝试使用pagecreate之前,网站上的其他所有内容都无法绑定到$.mobile.changePage()

$().ready(function() {      
    console.log("Document is ready.");
    $('#home').live('pagecreate', function(event) {
        DoStuff();
    });
});

DoStuff() {
    if(!CheckCredentials())
        $.mobile.changePage('#login');
    else {
        // Rest of code...
    }
}

他们在their documentation中明确了这一点,我最初错过了。