Ошибка мобильного jQuery - невозможно вызвать триггер метода неопределенного - PullRequest
3 голосов
/ 29 июля 2011

Я получаю следующее сообщение об ошибке в jQuery Mobile:

Невозможно вызвать метод 'trigger' из неопределенного

Это строка 2836 в jQuery.mobile.js, которая выглядит следующим образом:

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 Ответ

3 голосов
/ 15 августа 2011

Я находился в аналогичной ситуации при тестировании своего мобильного сайта в Safari на OS X. Чтобы решить эту проблему, мне пришлось привязаться к событию 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...
    }
}

Они разъясняют это в своей документации , которую я изначально пропустил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...