Jquery Mobile функция просмотра страниц - PullRequest
6 голосов
/ 15 ноября 2011

Я создаю веб-приложение с использованием инфраструктуры jqm и пытаюсь использовать функцию pageshow при включении виджета jQuery, k3dcarousel. На данной странице у меня есть сценарий под data-role="page" div,

$("#page-about").live(
    "pageshow",
    function (event) {
        $('#k3dCarousel_portrait').k3dCarousel();
    }
);

Похоже, мне нужно дважды щелкнуть ссылку, чтобы загрузить функцию JS, что заставило бы меня думать, что я использую эту функцию неправильно. Кроме того, если я не использую $("#page-about").die(); Если функция находится под функцией pageshow, сценарий будет загружен несколько раз, если я нажму назад и затем снова нажму на ссылку.

Я неправильно использую логику pageshow? Есть ли лучший способ достичь того, что я пытаюсь сделать: AJAX эта страница в моей мобильной среде.

Я понимаю, что это довольно специфический вопрос, но, надеюсь, на него есть общий ответ, так как мне кажется, что это может произойти с любым виджетом.

Любая помощь приветствуется, я могу вставить больше кода, если это поможет.

Спасибо за ваше время.

1 Ответ

7 голосов
/ 16 ноября 2011

Поскольку вы привязываетесь к событию pageshow, анонимная функция будет срабатывать при каждом просмотре страницы.Если вы хотите вызвать код только при первом просмотре страницы, то либо привяжите к pagecreate/pageinit событиям, либо проверьте наличие k3dCarousel в вашем pageshow коде:

$("#page-about").live(
    "pageshow",
    function (event) {
        //check for the existence of HTML within the container element
        if ($('#k3dCarousel_portrait').html().length == 0) {
            $('#k3dCarousel_portrait').k3dCarousel();
        }
    }
);

Вотобъяснение всех событий, связанных с jQuery Mobile: http://jquerymobile.com/demos/1.0rc3/docs/api/events.html

...