jquery мобильный колонтитул
У меня есть некоторые из jquery-страниц, каждая из которых имеет верхний и нижний колонтитулы. Как мне сделать это как один верхний и нижний колонтитулы. (т.е.) Хотите загрузить html-файлы верхнего / нижнего колонтитула в раздел верхнего / нижнего колонтитула главной страницы.
Пожалуйста посоветуй.
Пожалуйста, найдите структуру страницы ниже....
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Single page template</title>
<link rel="stylesheet" href="css/jquery.mobile-1.2.0.min.css" />
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/customScript.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
</head>
<body>
<div data-role="page" id="page1">
<div id="hdr">
<!--Need to include header.html-->
</div>
<div data-role="content">
<!--Content-->
</div>
<div id="ftr">
<!--Need to include footer.html-->
</div>
</div>
</body>
</html>
Заранее спасибо....
4 ответа
Вот рабочий пример:
index.html
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<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://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).on('pagebeforeshow', '[data-role="page"]', function(){
$.mobile.activePage.find('[data-role="header"]').load("header.html", function(){
$(this).parent().trigger('pagecreate');
});
$.mobile.activePage.find('[data-role="footer"]').load("footer.html", function(){
$(this).parent().trigger('pagecreate');
});
});
</script>
</head>
<body>
<div data-role="page" id="index">
<div data-theme="a" data-role="header">
</div>
<div data-role="content">
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
</div>
</div>
</body>
</html>
header.html
<h3>
Header
</h3>
footer.html:
<h3>
Footer
</h3>
Хитрость заключается в том, чтобы инициировать создание страницы (а не создание) для стилизации верхнего и нижнего колонтитула после добавления содержимого с помощью функции загрузки.
Прочитайте эту статью / ответ, чтобы найти разницу между
trigger('create')
а также
trigger('pagecreate').
По сути, pagecreate переустанавливает всю страницу целиком, а create будет стилизовать только контент.
Добавить заголовок
Проверяет, если нет заголовка, а затем .append()
заголовок .before()
ДИВ data-role=content
,
$(document).on('pagebeforeshow', function () {
if ($(this).find('[data-role=header]').length == 0) {
$('[data-role=content]').before('<div data-role="header"><h1>Page header</h1></div>');
$('[data-role=page]').trigger('pagecreate');
}
});
Добавить нижний колонтитул
Проверяет, нет ли нижнего колонтитула, а затем .append()
нижний колонтитул .after()
ДИВ data-role=content
,
$(document).on('pagebeforeshow', function () {
if ($(this).find('[data-role=footer]').length == 0) {
$('[data-role=content]').after('<div data-role="footer"><h1>Page footer</h1></div>');
$('[data-role=page]').trigger('pagecreate');
}
});
Вы можете использовать jQuery load ():
$(document).ready(function() {
$("#hdr").load("header.html");
$("#ftr").load("footer.html");
});
var currentPage=$.mobile.activePage;
$('<div data-role="header" id="myheader">
<a href="" >Home</a>
<a href="" >Back</a>
</div>').prependTo(currentPage).trigger('create');
$('<div data-role="footer" id="myfooter">
<a href="">About Us</a>
</div>').appendTo(currentPage).trigger('create');