File: sample-reuse-page-external.html

package info (click to toggle)
jquery-mobile 1.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 2,856 kB
  • sloc: php: 98; makefile: 14
file content (121 lines) | stat: -rw-r--r-- 4,059 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>changePage JSON Sample</title>
<link rel="stylesheet"  href="../../../css/themes/default/">
<script src="../../../js/jquery.js"></script>
	<script src="../../../docs/_assets/js/jqm-docs.js"></script>
	<script src="../../../js/jquery.mobile.js"></script>

<script type="text/javascript">

// Load the JSON data for a specific category, based on
// the URL passed in. Generate markup for the items in the
// category, inject it into an embedded page, and then make
// that page the current active page.
function showCategory( url, options )
{
	$.getJSON( url, function( category ) {
		if ( category ) {
			// Get the page we are going to dump our content into.
			var $page = $( "#category-items" ),
	
				// Get the header for the page.
				$header = $page.children( ":jqmData(role=header)" ),
	
				// Get the content area element for the page.
				$content = $page.children( ":jqmData(role=content)" ),
	
				// The markup we are going to inject into the content
				// area of the page.
				markup = "<p>" + category.description + "</p><ul data-role='listview' data-inset='true'>",
	
				// The array of items for this category.
				cItems = category.items,
	
				// The number of items in the category.
				numItems = cItems.length;
	
			// Generate a list item for each item in the category
			// and add it to our markup.
			for ( var i = 0; i < numItems; i++ ) {
				markup += "<li>" + cItems[i].name + "</li>";
			}
			markup += "</ul>";
	
			// Find the h1 element in our header and inject the name of
			// the category into it.
			$header.find( "h1" ).html( category.name );
	
			// Inject the category items markup into the content element.
			$content.html( markup );
	
			// Pages are lazily enhanced. We call page() on the page
			// element to make sure it is always enhanced before we
			// attempt to enhance the listview markup we just injected.
			// Subsequent calls to page() are ignored since a page/widget
			// can only be enhanced once.
			$page.page();
	
			// Enhance the listview we just injected.
			$content.find( ":jqmData(role=listview)" ).listview();
	
			// We don't want the data-url of the page we just modified
			// to be the url that shows up in the browser's location field,
			// so set the dataUrl option to the URL for the category
			// we just loaded.
			options.dataUrl = url;
	
			// Now call changePage() and tell it to switch to
			// the page we just modified.
			$.mobile.changePage( $page, options );
		}
	});
}

 
// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {
	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {
		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage );
		if ( u.pathname.search("category.php") !== -1 ) {
			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u.href, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

</script>
</head>

<body>
<div data-role="page">
  <div data-role="header"><h1>Categories</h1></div>
  <div data-role="content">
  	<h2>Select a Category Below:</h2>
  	<ul data-role="listview" data-inset="true">
    	<li><a href="category.php?id=animals">Animals</a></li>
    	<li><a href="category.php?id=colors">Colors</a></li>
    	<li><a href="category.php?id=vehicles">Vehicles</a></li>
    </ul>
  </div>
</div>
<div id="category-items" data-role="page" data-add-back-btn="true">
  <div data-role="header"><h1></h1></div>
  <div data-role="content"></div>
</div>
</body>
</html>