В этом примере используется jQM changePage()
для отправки данных с запросом страницы Ajax. Его можно использовать только в том случае, если аргументом 'to' для changePage()
является URL. Для получения дополнительной информации см. jQM documentation.
Инструкции для тестирования примера:
- Создать папку
- Создайте файл с именем cars.js внутри папки
- Создайте файл с именем cars.html внутри папки
- Создайте файл с именем car-details.html внутри папки
- Заполните каждый файл соответствующим кодом, который вы можете найти ниже
- Открыть cars.html, которая является первой страницы и навигации
Добавьте следующий код внутри car.js файла:
$(document).on("pageinit", "#car-page", function(e) {
$('#car-list a').on('click', function(e) {
e.preventDefault();
$.mobile.changePage('car-details.html', {
data: {
id: this.id
}
});
});
});
$(document).on("pageinit", "#car-details-page", function(e) {
var passedId = (($(this).data("url").indexOf("?") > 0) ? $(this).data("url") : window.location.href).replace(/.*id=/, "");
$("#details").html(["Selected id is: '", passedId, "'"].join(""));
});
Добавьте следующий код внутри страницы cars.html.
<!doctype html>
<html lang="en">
<head>
<title>Cars example</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="./cars.js"></script>
</head>
<body>
<div id="car-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car list</a></h1>
</div>
<div data-role="content">
<ul data-role="listview" id="car-list">
<li><a href="#" data-transition="flip" id="acura">Acura</a></li>
<li><a href="#" data-transition="flip" id="audi">Audi</a></li>
<li><a href="#" data-transition="flip" id="bmw">BMW</a></li>
</ul>
</div>
</div>
</body>
</html>
Добавьте следующий код на страницу car-details.html.
<!doctype html>
<html lang="en">
<head>
<title>Car Example</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="./cars.js"></script>
</head>
<body>
<div id="car-details-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car details</a></h1>
<a data-rel="back">Back</a>
</div>
<div data-role="content">
<div id="details"></div>
</div>
</div>
</body>
</html>
Пример 2
Решение с использованием совместно используемого объекта JS:
На второй странице на DIV появляется выбранный идентификатор. Кроме того, URL-адрес содержит идентификатор, поэтому его можно добавить в закладки. В случае, когда пользователь переходит на вторую страницу по первой странице, идентификатор передается на вторую страницу через общую переменную JS. Если пользователь открывает страницу с закладкой, то идентификатор извлекается из окна.location.href.
Обратите внимание, что вместо передачи значения href в общей переменной вы можете передать идентификатор или любое другое значение, которое поможет вам определить выбор пользователя.
Инструкции для тестирования примера:
- Создать папку
- Создайте файл с именем cars.js внутри папки
- Создайте файл с именем cars.html внутри папки
- Создайте файл с именем car-details.html внутри папки
- Заполните каждый файл соответствующим кодом, который вы можете найти ниже
- Открыть cars.html, которая является первой страницы и навигации
Добавьте следующий код внутри car.js файла:
var passDataObject = { selectedHref: null }
$(document).on("pageinit", "#car-page", function(e) {
$(this).find('a').unbind('click').click(function() {
passDataObject.selectedHref = this.href;
});
});
$(document).on("pageinit", "#car-details-page", function(e) {
var passedId = (passDataObject.selectedHref != null ? passDataObject.selectedHref : window.location.href).replace(/.*id=/, "");
$("#details").html(["Selected id is: '", passedId, "'"].join(""));
});
Добавьте следующий код внутри страницы cars.html:
<!doctype html>
<html lang="en">
<head>
<title>Cars example</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="./cars.js"></script>
</head>
<body>
<div id="car-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car list</a></h1>
</div>
<div data-role="content">
<ul data-role="listview" id="car-list">
<li><a href="./car-details.html?id=1" data-transition="flip" id="acura">Acura</a></li>
<li><a href="./car-details.html?id=2" data-transition="flip" id="audi">Audi</a></li>
<li><a href="./car-details.html?id=3" data-transition="flip" id="bmw">BMW</a></li>
</ul>
</div>
</div>
</body>
</html>
Добавьте следующий код внутри автомобиля-details.html:
<!doctype html>
<html lang="en">
<head>
<title>Car Example</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="./cars.js"></script>
</head>
<body>
<div id="car-details-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car details</a></h1>
<a data-rel="back">Back</a>
</div>
<div data-role="content">
<div id="details"></div>
</div>
</div>
</body>
</html>
Пример 3
многостраничных Пример (адресная строка URL-адрес не изменяется в зависимости от выбора автомобиля)
<!doctype html>
<html lang="en">
<head>
<title>Cars example</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script>
var passDataObject = { selectedId: null }
$(document).on("pageinit", "#car-page", function(e) {
$(this).find('a').unbind('click').click(function(e) {
e.preventDefault();
passDataObject.selectedId = this.id;
$.mobile.changePage('#car-details-page', { transition: 'flip'});
});
});
$(document).on("pagebeforeshow", "#car-details-page", function(e) {
$("#details").html(["Selected id is: '", passDataObject.selectedId, "'"].join(""));
});
</script>
</head>
<body>
<div id="car-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car list</a></h1>
<a data-rel="back">Back</a>
</div>
<div data-role="content">
<ul data-role="listview" id="car-list">
<li><a href="#" id="acura">Acura</a></li>
<li><a href="#" id="audi">Audi</a></li>
<li><a href="#" id="bmw">BMW</a></li>
</ul>
</div>
</div>
<div id="car-details-page" data-role="page">
<div data-role="header">
<h1><a data-ajax="false" href="/">Car details</a></h1>
<a data-rel="back">Back</a>
</div>
<div data-role="content">
<div id="details"></div>
</div>
</div>
</body>
</html>
Я надеюсь, что это помогает.
Если у вас все еще есть проблемы, и вы хотите получить полную навигацию по URL-адресу, не стесняйтесь попробовать мой [плагин] (https://github.com/CameronAskew/jquery.mobile.paramsHandler), который я недавно создал для jQM 1.4+ –