Add Panel Dynamically
jQuery Mobile
by Omar X
HTML
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css">
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<div data-role="page" id="p1">
<!-- header -->
<div data-role="header">
<h1>Header</h1>
</div>
<!-- content -->
<div data-role="content">
<h1>contents</h1>
<a data-role="button" href="#p2">Page 2</a>
</div>
<!-- footer -->
<div data-role="footer">
<h1>Footer</h1>
</div>
</div>
<!-- page -->
<div data-role="page" id="p2">
<!-- header -->
<div data-role="header">
<h1>Header</h1>
</div>
<!-- content -->
<div data-role="content">
<h1>contents</h1>
<a data-role="button" href="#p1">Page 1</a>
<a data-role="button" href="#p3">Page 3</a>
</div>
<!-- footer -->
<div data-role="footer">
<h1>Footer</h1>
</div>
</div>
<!-- page -->
<div data-role="page" id="p3">
<!-- header -->
<div data-role="header">
<h1>Header</h1>
</div>
<!-- content -->
<div data-role="content">
<h1>contents</h1>
<a data-role="button" href="#p2">Page 2</a>
</div>
<!-- footer -->
<div data-role="footer">
<h1>Footer</h1>
</div>
</div>
<!-- page -->
JavaScript
var p = 1,
b = 1;
$(document).one('pagebeforecreate', function () {
$.mobile.pageContainer.find("[data-role=page]").each(function () {
var panel = '<div data-role="panel" id="mypanel' + p + '" data-position="right" data-display="push"><h1>Panel</h1><p>stuff</p></div>';
$(this).prepend(panel);
p++;
});
$.mobile.pageContainer.find("[data-role=header]").each(function () {
var panelBtn = '<a href="#mypanel' + b + '" class="ui-btn ui-btn-right ui-btn-icon-notext ui-icon-grid ui-corner-all"></a>'
$(this).append(panelBtn);
b++;
});
});