jQM - Autogenerate child listview elements

by Dragan Gaić

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>jQM Complex Demo</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>    
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>    
    </head>
    <body>
        <div data-role="page" id="parentPage">
            <header data-role="header" data-theme="d">
                <h3>Parent</h3>
            </header>
            <div>				
                <ul id="sectionUlContainer" data-role="listview">
                    <li><a href="#" class="sectionItemClass">List1</a></li>
                    <li><a href="#" class="sectionItemClass">List2</a></li>
                    <li><a href="#" class="sectionItemClass">List3</a></li>
                    <li><a href="#" class="sectionItemClass">List4</a></li>
                </ul>
            </div>
            <footer data-role="footer" data-position="fixed" data-theme="b">
                <h3></h3>
            </footer>
        </div>
        
        <div data-role="page" id="childPage">
            <header data-role="header" data-theme="d">
                <h3>Child</h3>
                <a href="#parentPage">Back</a>
            </header>
            <div id="childList"></div>
        </div>   
    </body>
</html>

JavaScript

$(document).on('pageinit', '#parentPage', function(){     
    $(document).on('click','.sectionItemClass',function(){
        var childWidget = '<ul id="childUlContainer" data-role="listview"><li>childList</li></ul>';
        $('#childList').html(childWidget);
        $.mobile.changePage('#childPage',{transition:'slide'});
    });
});

$(document).on('pagebeforeshow', '#childPage', function(){       
    $('#childUlContainer').listview().listview('refresh')
});