JQuery Mobile: используйте тот же верхний колонтитул для всех страниц
Я пытаюсь реализовать некоторый код, который будет создавать верхние и нижние колонтитулы на всех моих веб-страницах, а не жестко их кодировать. Я пробовал это:
У меня было это на моей "главной странице", которую я только что назвал завернутым заголовком, который я хотел в div.
<div id="headerProto">
<div data-role="header" data-position="fixed" data-theme="b">
<h1> Title </h1>
</div>
</div>
Затем на других страницах у меня было:
<div class="headerChild">
</div>
И я добавил:
$(".headerChild").html($("#headerProto").html());
Нет кубиков. В любом случае это была общая догадка о том, как я должен это делать. Есть ли лучший способ?
Ответы
Ответ 1
Использование . load() может помочь, а затем просто поместите код, который вы хотите включить в файл, на который вы ссылаетесь.
$('.headerChild').load('pathto/headerProto.html')
Альтернативный способ, если вы не хотите хранить данные в отдельном файле:
Я не сделал этого, но из некоторых быстрых исследований вы также можете связать элемент с файлом.
$('.headerChild').load('pathto/mainPage.html #headerProto')
Ответ 2
Кредит отправляется в мариачи.
http://forum.jquery.com/topic/jquery-mobile-fixed-header-and-footer-on-page-transition
Я просто вставляю его решение.
1.) Оберните свою роль data-role = "header" и поместите id = "константа-обертка".
Мобильный сидор
Используйте div, если вы хотите в обертке заголовка, но старайтесь иметь полный вывод обработанного заголовка, как в этом случае, иначе он потеряет стиль при перезагрузке страницы. ЗАМЕТКА! Поместите заголовок на первую страницу, затем этот метод просто добавляет заголовок html ко всем другим страницам.
2.) Поместите функцию в файл или встроенный script:
jQuery.fn.headerOnAllPages = function() {
var theHeader = $('#constantheader-wrapper').html();
var allPages = $('div[data-role="page"]');
for (var i = 1; i < allPages.length; i++) {
allPages[i].innerHTML = theHeader + allPages[i].innerHTML;
}
};
3.) Вызвать функцию из документа, например:
$(document).ready(function() {
$().headerOnAllPages();
});
Ответ 3
Я использую .clone()
В моем многостраничном проекте jQuery Mobile у меня есть заголовок на моей главной странице:
<div data-role="header" data-id="header" class="ui-header ui-bar-b" role="banner" id="headerMaster">
<a href="#my-menu">Menu</a>
<h1 class="ui-title" role="heading" aria-level="1">My Header</h1>
</div>
и во всех последующих страницах (или divs с data-role = page) у меня есть следующее:
<div class="headerChild">
</div>
а затем на странице, вы клонируете мастер и добавьте все дочерние элементы:
$(document).delegate("#index", "pageinit", function () {
$("#headerMaster").clone().appendTo(".headerChild");
});
EDIT:
если pageinit не работает для вас, попробуйте выполнить событие bebeecreate
$(document).delegate("#index", "pagebeforecreate", function () {
$("#headerMaster").clone().appendTo(".headerChild");
});