Динамические страницы с помощью jQuery Mobile
Я использую jQuery довольно долго и делаю первые шаги с помощью jQuery Mobile.
Я использую index.html как jQuery Mobile и дизайн своего приложения, которое вызывает контент из content.php(просмотр списка всех страниц) сразу после его загрузки.
Я использую page.php для шаблона содержимого страницы, который отображает содержимое в зависимости от переменной, например:
page.php? ID = 01
page.php? ID = 02
page.php? id = 03... И так далее.
Я думал, что лучший способ перейти отсюда - это иметь две страницы jQm на index.html, одну для главной страницы приложения, и одну, которая динамически загружает контент из page.php? id = xx. Таким образом, мне не нужно загружать весь контент, как только мое приложение будет загружено.
Как это сделать? Как я могу заставить элементы списка списка перейти на следующую страницу и загрузить в нее нужный контент?
Ответы
Ответ 1
Рабочий комментарий:
$("#appMainMenu a").live("click", function(evt){
var whatpageto = $(this).attr('id');
$('#dynamicPage').attr('title', 'dpage-'+whatpageto); // the title would look like title="dpage-linksid"
});
- Загружать данные следующим образом:
$('#dynamicPage').bind('pageshow', function() {
$('#dPage').html(''); // animate while we're loading data
var whatpage = $(this).attr('title'); // get the page title we changed earlier
var whatpage1 = whatpage.replace("dpage-", ''); // remove the 'dpage-' part from the title, and we have our id.
var whatpage2 = 'path/to/pagewhereyourcontentis.html'; // where is the content coming from? url or path to file
$.get(whatpage2, function(data) { // load content from external file
$('#dynamicPage').html(data); // insert data to the jqMobile page (which is a div).
$('#dynamicPage').page(); // Re-render the page otherwise the dynamic content is not styled.
});
});
Надеюсь, это поможет. Вопросы?
Ответ 2
Просто создавайте ссылки с <a href="...
, и это работает. JQM загружает их с помощью AJAX
Приложение, которое вы создаете с помощью JQM, должно работать в любом старом браузере без javascript. Остальное позаботится сам JQM.
[править]
Чтобы получить URL-адреса и поместить их в любом месте, вам нужно просто использовать обычный старый . load() или . get() из jquery arsenal и когда вы получите контент в div, который вам нужен -
устарело: используйте .page() из jquery mobile
текущий: вызов .trigger('create')
(это событие добавляет стили и элементы управления).
Подробные инструкции приведены в моих FAQ: http://jquerymobiledictionary.pl/faq.html
Ответ 3
Вот что я решил решить для моей страницы
$("#masterList").empty();
var listItems = "";
$.each(data.Messages, function (i, item)
{
listItems += "<li><div><a href='#messageData' onclick='$(" + // Use a click handler to set the attr of detailPage div
'"#detailPage").attr("detailId", "'+ item.Id + // my JSON item has an ID
'")' + "'>"; // note the crazy quoting
listItems += "Test about the item</a></li>";
}
$("#masterList").append(listItems);
Для detailPage я использовал обработчик события showhow для извлечения объекта JSON с использованием идентификатора и загрузил элемент детали на основе идентификатора в атрибуте detailId - что-то вроде loadDetail ($ ( "# detailPage" ). attr ( "detailId" )), и моя функция loadDetail сделала все остальное.
К сожалению, это нарушит стратегию URL для jQuery mobile. Поскольку выбранный элемент хранится на самой странице - это нехорошо. Я попытаюсь использовать внешнюю ссылку, являющуюся HTML-страницей и передающую id как arg.
Ответ 4
![enter image description here]()
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0"/>
<link rel="stylesheet" href="jquery.mobile-1.0.1.css" />
<title> Hello World </title>
<script src="jquery.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$('#omtList').html('<ul data-role="listview" data-split-icon="delete" data-split-theme="d"> <li><a href="index.html"><h3>Broken Bells</h3><p>Broken Bells</p></a><a href="lists-split-purchase.html" data-rel="dialog" data-transition="slideup">Purchase album </a></ul>').trigger('create');
});
</script>
</head>
<body>
omt
<div>
<div id="omtList">
</div><!--/content-primary -->
</body>
</html>