2 votes

Comment obtenir l'en-tête et le pied de page sur les sous-pages créées avec jQuery Mobile ?

J'ai un fichier HTML contenant un certain nombre de "pages" JQM. Je suis donc en mesure de créer un bel en-tête et un beau pied de page qui sont persistants sur toutes les pages de ce fichier... sauf ceux que JQM crée lui-même lorsqu'il navigue dans une liste contenant une sous-liste.

Lorsque vous cliquez sur Page2, puis sur Foo, vous obtenez une page fabriquée par JQM pour la sous-liste Foo, avec Baz1, 2 et 3. Il manque à cette page l'en-tête et le pied de page. Avez-vous une idée de la façon de les intégrer à cette page, sans la diviser en une nouvelle page créée manuellement ?

Merci, Dave

Voici une page d'exemple fonctionnelle : http://geology.wwu.edu/dept/testnew/prospectives/test2.php

Voici un code de démonstration :

<body>
<div data-role="page" id="home">
    <div data-role="header" class='geobanner'><a href="#home" data-icon="home" data-theme="b" data-direction="reverse">Home</a></div>
    <div data-role="content">
        <h1>Main Content - Page 1</h1>
        <p>Lorem ipsum.</p>
        <ul data-role="listview" data-theme="c">
            <li><a href="#page2" >Page2</a></li>
            <li><a href="#" >Page3</a></li>
        </ul>
    </div>
    <div data-role="footer" data-id="foo" data-position="fixed">
        <div data-role="navbar" data-theme="c">
            <ul>
                <li><a href="#">Ftr1</a></li>
                <li><a href="#">Ftr2</a></li>
            </ul>
        </div>
    </div>
</div>
<div data-role="page" id="page2">
    <div data-role="header" class='geobanner'><a href="#home" data-icon="home" data-theme="b" data-direction="reverse">Home</a></div>
    <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
            <li><a href="#" >Foo</a>
            <ul>
                <li><a href="#" >Baz1</a></li>
                <li><a href="#" >Baz2</a></li>
                <li><a href="#" >Baz3</a></li>
            </ul></li>
            <li><a href="#" >Bar</a></li>
        </ul>
    </div>
    <div data-role="footer" data-id="foo" data-position="fixed">
        <div data-role="navbar" data-theme="c">
            <ul>
                <li><a href="#">Ftr1</a></li>
                <li><a href="#">Ftr2</a></li>
            </ul>
        </div>
    </div>
</div>
</body>
</html>

1voto

maco Points 376

Charger les js comme ceci:

$(document).ready(function() {
    var hdhtml = $($.mobile.activePage).children('div').eq(0).clone();
    var fthtml = $($.mobile.activePage).children('div').eq(2).clone();
    $('div:jqmData(role="page")').live('pageinit',function() {
        $('div:jqmData(role="header")').remove();
        $('div:jqmData(role="footer")').remove();
        $('div:jqmData(role="page")').prepend(hdhtml).append(fthtml);
    });
    if( $('div:jqmData(role="page")').length > 2 ){
        $('div:jqmData(role="header")').remove();
        $('div:jqmData(role="footer")').remove();
        $('div:jqmData(role="page")').prepend(hdhtml).append(fthtml);
    }
});

Si vous n'avez pas l'intention de définir des balises de titre comme <h1> a <div data-role="header"> définissez la hauteur ou la marge inférieure de header-div.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X