2012-04-03 11 views
0

Ich habe folgende jQueryMobile Seite Anatomie an index.html:Aktualisieren Seite nach AJAX-Request in jQuery Mobile

<div data-role="page"> 
    <div data-role="header">...</div> 
    <div data-role="content">...</div> 
    <div data-role="footer">...</div> 
</div> 

Ich bin daran interessiert, die anderen Seiten im Laden (die nicht über diese Anatomie haben) zu data-role="content" durch AJAX, um die gleiche Kopf- und Fußzeile über alle Seiten zu verwenden.

Der folgende Code funktioniert einwandfrei, aktualisiert die Elemente jedoch nicht mit jQueryMobile-Stilen.

$('div:jqmData(role="content")').load('pages/home.html'); 
+0

ist 'pages/home.html' eine ganze Seite mit' ',' 'und' '-Tags? – Alexander

+0

Nein, enthält nur den spezifischen HTML-Code der Seite. –

+0

die Stile von 'pages/home.html' sind anders und nicht enthalten in denen von' index.html'? AFAIK, das _all_ die CSS in 'index.html' zu setzen wäre genug. – Alexander

Antwort

7

Alles, was Sie tun müssen, ist dem jQuery-Framework sagen, die neuen Widgets zu initialisieren:

$('.ui-content').load('pages/home.html', function() { $(this).trigger('create') }); 

Auch, wenn alles, was Sie wollen, ist ein hartnäckiges Kopf-/Fußzeilen, dann sollten Sie beim Check-out nur, dass Funktion, die jQuery mobile hat: http://jquerymobile.com/demos/1.1.0-rc.1/docs/toolbars/footer-persist-b.html

Hier ist eine Demo: http://jsfiddle.net/VMhz4/1/

aktualisieren

Sie können data-role="button" auf Links wie diese dynamisch hinzufügen, wenn Sie benötigen:

$('.ui-content').load('pages/home.html', function() { 

    //after the AJAX request has resolved and the HTML has been added to the DOM, this will run 

    //find all the links that were just added to the DOM and add the `data-role="button"` attribute to each, 
    //then end the current selection (returning to `$(this)`) and initialize all widgets 
    $(this).find('a').attr('data-role', 'button').end().trigger('create'); 
}); 
+0

Es funktioniert nicht. –

+0

Es funktioniert tatsächlich (hier ist eine Demo: http://jsfiddle.net/VMhz4/1/). Sie müssen genauer darauf eingehen, wie es nicht funktioniert. Welche Fehler bekommen Sie? Fügen Sie den Elementen die erforderlichen 'Datenrollen'-Attribute hinzu? Wie sieht der Code von 'pages/home.html' aus? – Jasper

+0

Ihr Beispiel funktioniert, weil es Elemente anhängt und nicht aus einer anderen HTML-Datei lädt. Der Code von home.html enthält eine Schaltfläche ohne Datenrollen. –

Verwandte Themen