2012-06-15 13 views
6

Używam jQuery mobile w szablonie pojedynczej strony (każda strona jest oddzielnym plikiem html). Chcę wstępnie pobrać stronę, która ładuje zawartość przez Ajax. I umieścić kod w funkcji preselekcji document.ready() w pierwszej stroniejQuery mobile prefetching stronę ładującą zawartość za pośrednictwem Ajaxa

$.mobile.loadPage("my-projects.html", { showLoadMsg: false }); 

ajax połączeń wewnątrz funkcji document.ready() z drugiej strony, które chcę wstępne pobieranie. To wywołanie ajaxowe nie dzieje się, gdy przygotowujemy tę stronę. Czy istnieje sposób, aby to osiągnąć. Proszę o pomoc

+0

Wydaje mi się, że musisz to zrobić za pomocą zdarzeń związanych z kartami, zamiast zdarzeń jQuery-mobile. http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html – Th0rndike

Odpowiedz

1

jQuery Mobile prefetching zbudowany tuż, wszystko co musisz zrobić, to dodać atrybut data-prefetch na link, który łączy się ze zdalnym stronie:

<a href="prefetchThisPage.html" data-prefetch> ... </a> 

Źródło: http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html

W ogólnym sensie, gdy strona jest pobierana za pośrednictwem AJAX, funkcja ta nie zostanie zwolniona. Można jednak używać zdarzeń strony mobilnej jQuery, takich jak pageinit. Na przykład:

$(document).delegate('#my-page-id', 'pageinit', function() { 
    $.mobile.loadPage("my-projects.html", { showLoadMsg: false }); 
}); 
+0

Ponieważ korzystam z każdej strony to osobny plik html # moja-strona-id nie ma tu znaczenia. Również nie ma problemu z "$ .mobile.loadPage (" my-projects.html ", {showLoadMsg: false});" Wystrzeliwuje poprawnie. Problem polega na wywołaniu ajax, które znajduje się na stronie, którą chcę wstępnie pobrać. Nie uruchamia się, gdy zaczyna się prefiks. –

+0

Powinieneś przeczytać to, zauważ żółte pole: http://jquerymobile.com/demos/1.1.0/docs /api/events.html. Teraz w jQuery Mobile, ponieważ wszystkie strony domyślnie są wprowadzane do DOM za pośrednictwem AJAX, przy użyciu identyfikatora do powiązania z określoną stroną ** z pewnością ma znaczenie **. Używanie takiego kodu, jaki pokazałem w mojej odpowiedzi, pozwala nam uruchamiać określony kod dla konkretnych stron przy zachowaniu jednego źródła dla naszego JS (możesz umieścić swój JS w pliku i umieścić go w nagłówku każdej strony, aby był gotowy na każdą stronę). A twoim problemem jest "document.ready", nie używaj go do witryn jQuery Mobile. To nie będzie działać tak, jak się spodziewasz. – Jasper