167
Building with jQuery Mobile Boston PHP - February 9, 2011 Scott Jehl + Todd Parker 1

Jquery Mobile Cross Platform Mobile Web Development HTML5

Embed Size (px)

Citation preview

Page 1: Jquery Mobile Cross Platform Mobile Web Development HTML5

Building with jQuery MobileBoston PHP - February 9, 2011

Scott Jehl + Todd Parker

1

Page 2: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Hello.

2

Page 3: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

We're fromFilament Group.We design engaging user interfaces for web applications, mobile devices and touchscreen kiosks that are simple and accessible to everyone.

3

Page 4: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

We're fromFilament Group.

Authors of

4

Page 5: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

We're fromFilament Group.

Design Team Leads

5

Page 6: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

We're fromFilament Group.

Design & Dev Leads (and sponsor)

6

Page 7: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

...speaking of sponsors

7

Page 8: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

The challenge we faceJohn Resig hath spoken

8

Page 9: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

History repeats itself

=

9

Page 10: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

1.82 billion

web-enabled mobiles by 2013

10

Page 11: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

0

7.5

15

22.5

30

Opera iPhone Nokia Blackberry AndroidiPod Touch NetFront Samsung UCWEB Other

Device/browser diversity

Global Mobile Browser Use http://gs.statcounter.com/#mobile_os-ww-monthly-200911-201011-bar

11

Page 12: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

US breakdownhttp://www.quirksmode.org/blog/archives/2011/01/mobile_browser_2.html

12

Page 13: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Global mobile browsershttp://www.quirksmode.org/blog/archives/2011/01/mobile_browser_1.html

13

Page 14: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

"Anyone who slaps a 'this page is best viewed with Browser X' label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network."

Tim Berners-Lee in Technology Review, July 1996

14

Page 15: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

different contexts,same expectations

15

Page 16: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Goals, philosophy, & approach

Unified system, Universal access, Easy development

16

Page 17: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Unified mobile experience

17

Page 18: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Touch UI frameworkBuilt on jQuery core

Mobile + Tablet UI Desktop UI

Tools + utilities

18

Page 19: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

One codebase, All mobile platforms

19

Page 20: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Familiar API, tight filesize

jquery.min.js

jquery.mobile.min.js

27kb

~15kb

20

Page 21: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Branded experiences

http://m.goba.mobi/http://www.bbc.co.uk/1xtra/touch/ http://m.niteowl.us/

21

Page 22: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Theme framework

22

Page 23: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Accessible

23

Page 24: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Built on HTML+ progressive enhancement

24

Page 25: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Embrace the web

Bookmark / Refresh Friendly URLSBack button works

25

Page 26: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Multiple input mechanisms

Touch & Mouse Events

Mouse Events

26

Page 27: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Native apps?

27

Page 28: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Sure.(but not our primary focus)

28

Page 29: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Native to the webThe OS isn’t the medium

29

Page 30: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Supported now

iOS Android WebOSBlackberry 6

30

Page 31: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Win Phone 7SymbianBlackberry 5

Coming by beta

31

Page 32: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Usable everywhere

32

Page 33: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Getting started

jQuery Mobile step-by-step

33

Page 34: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Anatomy of a page

34

Page 35: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>jQuery Mobile Page</title>

</head>

<body>

</body>

</html>

HTML 5 document

35

Page 36: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>jQuery Mobile Page</title>

<link rel="stylesheet" href="/jquery.mobile-1.0a3.min.css" /><script type="text/javascript" src="/jquery-1.5.min.js"></script><script type="text/javascript" src="/jquery.mobile-1.0a3.min.js"></script>

</head>

jQuery, Mobile + Theme CSS

36

Page 38: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<body>

<div data-role="page"> <!-- jQuery Mobile page content goes here --> </div><!-- /page -->

</body>

data-role="page"

38

Page 39: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Page data-roles

header

footer

content

39

Page 40: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<body> <div data-role="page">

<div data-role="header"> </div><!-- /header -->

<div data-role="content"> </div><!-- /content -->

<div data-role="footer"> </div><!-- /footer -->

</div><!-- /page --></body>

Page data-roles

40

Page 41: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<body> <div data-role="page">

<div data-role="header"> <h1>Welcome</h1> </div><!-- /header -->

<div data-role="content"> <p>Hello world</p> </div><!-- /content -->

</div><!-- /page --></body>

Simple content

41

Page 42: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

42

Page 43: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content"> <p>Hello world</p>

<ul> <li>Products</li> <li>Services</li> <li>About us</li> <li>Contact</li> </ul>

</div><!-- /content -->

Basic list

43

Page 44: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

44

Page 45: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content"> <p>Hello world</p>

<ul data-role="listview" data-inset="true"> <li>Products</li> <li>Services</li> <li>About us</li> <li>Contact</li> </ul>

</div><!-- /content -->

Add listview role

45

Page 46: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

46

Page 47: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content"> <p>Hello world</p>

<ul data-role="listview" data-inset="true"> <li><a href="products.html">Products</a></li> <li><a href="services.html">Services</a></li> <li><a href="about.html">About us</a></li> <li><a href="contact.html">Contact</a></li> </ul>

</div><!-- /content -->

Link each item

47

Page 48: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

48

Page 49: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Theming

49

Page 50: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Theme swatches

50

Page 51: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content" data-theme="a"> <p>Hello world</p>

<ul data-role="listview" data-inset="true" data-theme="b"> <li><a href="products.html">Products</a></li> <li><a href="services.html">Services</a></li> <li><a href="about.html">About us</a></li> <li><a href="contact.html">Contact</a></li> </ul>

</div><!-- /content -->

data-theme swatch

51

Page 52: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

52

Page 53: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Page linking

53

Page 54: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content" data-theme="a"> <p>Hello world</p>

<ul data-role="listview" data-inset="true" data-theme="b"> <li><a href="products.html">Products</a></li> <li><a href="services.html">Services</a></li> <li><a href="about.html">About us</a></li> <li><a href="contact.html">Contact</a></li> </ul>

</div><!-- /content -->

External page links

54

Page 55: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Meaningful URLs

Supports back button history,deep linking & bookmarking

55

Page 56: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Coming soon: pushState

http://example.com/products.html

http://example.com/test.html#products.html

56

Page 57: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Multi-page Documents

57

Page 58: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<body>

<div data-role="page" id="home"> </div><!-- /home page -->

<div data-role="page" id="products"> </div><!-- /products page -->

<div data-role="page" id="services"> </div><!-- /home page -->

<div data-role="page" id="about"> </div><!-- /home page -->

<div data-role="page" id="contact"> </div><!-- /home page -->

</body>

Each "page" has a unique ID

58

Page 59: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="content" data-theme="a"> <p>Hello world</p>

<ul data-role="listview" data-inset="true" data-theme="b"> <li><a href="#products">Products</a></li> <li><a href="#services">Services</a></li> <li><a href="#about">About us</a></li> <li><a href="#contact">Contact</a></li> </ul>

</div><!-- /content -->

...with internal #anchor links

59

Page 60: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Multi-page local model

#home.ui-page-active

#product #services #about #contact

Index.html

60

Page 61: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<a href="multi.html" rel="external">Multi</a>

rel="external"

* Required if linking TO a multi-page file to avoid hash namespace collisions

61

Page 62: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Change Pages via jQuery

$.mobile.changePage( "about/us.html" );

62

Page 63: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

window.history.back();

...and back!

63

Page 64: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Transitions

64

Page 65: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

data-transition="pop"

65

Page 66: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<a href="index.html" data-transition="pop" data-direction="reverse">Home</a>

data-direction="reverse"

66

Page 67: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Transitions via jQuery

$.mobile.changePage(

"about.html",

"flip"

);

67

Page 68: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Dialogs

68

Page 69: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<a href="products.html" data-rel="dialog">Home</a>

data-rel="dialog"

69

Page 70: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

data-rel="dialog" normal link

70

Page 71: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<a href="products.html" data-rel="dialog"

data-transition="flip">Open dialog</a>

Same transition attribute

71

Page 72: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

72

Page 73: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<a href="index.html" data-rel="back">Done</a>

or via JS...

$('.ui-dialog').dialog('close')

or even...

window.history.back();

Closing dialogs

73

Page 74: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Dialogs = Not in history

...but dialogs can be closed with back button

74

Page 75: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Buttons

75

Page 76: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Link styled as a button

<a href="index.html" data-role="button">Link button</a>

76

Page 77: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Other markup options

77

Page 78: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Icons

<a href="delete-confirm.html" data-icon="delete">Delete</a>

78

Page 79: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Icon position

data-iconpos="right"

data-iconpos="top"

data-iconpos="bottom"

data-iconpos="left"

data-iconpos="no text"

79

Page 80: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Button groups

<div data-role="controlgroup">

<a href="index.html" data-role="button">Yes</a>

<a href="index.html" data-role="button">No</a>

<a href="index.html" data-role="button">Maybe</a>

</div>

80

Page 81: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Horizontal groups

<div data-role="controlgroup" data-type="horizontal">

81

Page 82: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Inline buttons

<div data-inline="true"> <a href="index.html" data-role="button">Cancel</a> <a href="index.html" data-role="button" data-theme="b">Save</a></div>

82

Page 83: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Theme inheritance

83

Page 84: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Toolbars

84

Page 85: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Header bar

<div data-role="header">

<a href="index.html" data-icon="delete">Cancel</a>

<h1>Edit Contact</h1>

<a href="index.html" data-icon="check" data-theme="b">Save</a>

</div>

Links in header are automatically turned into buttons

85

Page 86: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Auto back button

<div data-role="header">

<h1>Page Title</h1>

</div>

Disable with data-backbtn="false"

86

Page 87: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Custom back button

<div data-role="header">

<a href="index.html" data rel="back" data-direction="reverse" data-

icon="arrow-l">Back</a>

<h1>Page Title</h1>

</div>

87

Page 88: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Footer

<div data-role="footer"> <a href="index.html" data-role="button" data-icon="delete">Remove</a> <a href="index.html" data-role="button" data-icon="plus">Add</a> <a href="index.html" data-role="button" data-icon="arrow-u">Up</a> <a href="index.html" data-role="button" data-icon="arrow-d">Down</a></div>

88

Page 89: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Navbar

<div data-role="navbar"> <ul> <li><a href="a.html" class="ui-btn-active">One</a></li> <li><a href="b.html">Two</a></li> </ul> </div><!-- /navbar -->

89

Page 90: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Navbar with icons

90

Page 91: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

data-position="fixed"

91

Page 92: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

data-fullscreen="true"

92

Page 93: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Persistent footer

93

Page 94: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Listviews

94

Page 95: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<ul data-role="listview">

<li><a href="acura.html">Acura</a></li>

<li><a href="audi.html">Audi</a></li>

<li><a href="bmw.html">BMW</a></li>

</ul>

Basic listview markup

95

Page 96: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Unordered lists (UL)

96

Page 97: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Ordered lists (OL)

97

Page 98: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Nested lists = Drillable pages

98

Page 100: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Icons + count bubbles

<li>

<img src="images/gf.png" alt="France" class="ui-li-icon">

<a href="france/">France</a>

<span class="ui-li-count">4</span>

</li>

100

Page 101: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

List dividers

<li data-role="list-divider">A</li>

101

Page 102: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Filter bar

<ul data-filter="true">

102

Page 103: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Inset style

<ul data-inset="true">

Inset Default

103

Page 104: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Adding Listview Items

104

Page 105: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

$( “ul#people” ).

.append(

“<li><a href=’...’>Joey</a></li>”

).listview( “refresh” );

Append, then Refresh!

105

Page 106: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

List theming

data-theme="a"data-icon="none" data-dividertheme="b"data-counttheme="c"data-splittheme="d"data-spliticon="plus"

106

Page 107: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Forms

107

Page 108: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<form action="handler.php" method="post">

...

</form>

Start with a form element

108

Page 109: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<form action="handler.php" method="post">

<label for="name">Text Input:</label>

<input type="text" name="name" id="name"

value="" />

</form>

Associate labels with IDs

109

Page 110: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<form action="form.php" method="post">

<div data-role="fieldcontain">

<label for="name">Text Input:</label>

<input type="text" name="name" id="name"

value="" />

</div>

</form>

Field containers

110

Page 111: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Auto-optimized label/inputlayout based on width

111

Page 112: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<label for="name">Search:</label>

<input type="text" id="name" value="" />

Text input

112

Page 113: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

type="password"

113

Page 114: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

type="number"

114

Page 115: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

type="email"

115

Page 116: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

type="url"

116

Page 117: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

type="tel"

117

Page 118: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

auto-grow textarea

118

Page 119: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<label for="find">Search:</label>

<input type="search" id="find" value="" />

Search input

119

Page 120: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Search input

120

Page 121: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<div data-role="fieldcontain">

<label for="slider">Input slider:</label>

<input type="range" name="slider" id="slider"

value="50" min="0" max="100" />

</div>

Slider

121

Page 122: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Slider

122

Page 123: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<label for="switch">Flip switch:</label>

<select name="switch" id="switch" data-role="slider">

<option value="off">Off</option>

<option value="on">On</option>

</select>

Flip switch slider

123

Page 124: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Flip switch slider

124

Page 125: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<fieldset data-role="controlgroup">

<legend>Choose a pet:</legend>

<input type="radio" name="r1" id="r1" value="choice-1" checked="checked" />

<label for="r1">Cat</label>

<input type="radio" name="r2" id="r2" value="choice-2" />

<label for="r2">Dog</label>

<input type="radio" name="r3" id="r3" value="choice-3" />

<label for="r3">Hampster</label>

<input type="radio" name="r4" id="r4" value="choice-4" />

<label for="r4">Lizard</label>

</fieldset>

Radio button set

125

Page 126: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Radio button set

126

Page 127: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Horizontal set

<fieldset data-role="controlgroup" data-type="horizontal">

127

Page 128: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Checkboxes too

128

Page 129: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<label for="select-choice-1">Choose shipping method:</label>

<select name="select-choice-1" id="select-choice-1">

<option value="standard">Standard: 7 day</option>

<option value="rush">Rush: 3 days</option>

<option value="express">Express: next day</option>

<option value="overnight">Overnight</option>

</select>

Select menu

129

Page 130: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Select menu

130

Page 131: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Long select menu

131

Page 132: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

data-native-menu="true"

132

Page 133: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Placeholder option

• No (or empty) value attribute

• No text node

• data-placeholder="true"

An option with...

133

Page 134: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

More select attributes

Optgroups<optgroup label="USPS">

Disableddisabled="disabled"

Multiple selectmultiple="multiple"

134

Page 135: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Append/Set/Get Values

135

Page 136: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

$( "select#my-select" ).

.append(

"<option value='a'>A</option>”

).selectmenu( “refresh” );

Append, then Refresh!

136

Page 137: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

var mySelect = $('select#my-select');

mySelect.get(0).selectedIndex = 2;

mySelect.selectmenu("refresh");

Set Value, refresh!

137

Page 138: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Submitting forms

138

Page 139: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<form action="forms-sample-response.php" method="get">

Ajax form submission

139

Page 140: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Submitting via jQuery

$.mobile.changePage({

url: "data/handler.php",

type: "post",

data: { "shipping": "Fast!" }

});

140

Page 141: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Theme inheritance

data-theme="a" data-theme="b" data-theme="e"

141

Page 142: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Technical bits

Oh, you want to see some JavaScript too?

142

Page 143: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Events

143

Page 144: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Custom Events

‣ tap

‣ taphold

‣ swipe (left/right)

‣ scroll (start/stop)

‣ orientationchange

144

Page 145: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Custom Events (cont.)

‣ page events ([before] show/hide/create)

‣ mobileinit

“DomReady” becomes “pagecreate”

145

Page 146: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

domReady

146

Page 147: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

$( "#mypage" ).live( "pagecreate",

function(){

//do something!

}

);

Dom Ready = pagecreate

147

Page 148: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Responsive layout

‣ orientation: .portrait .landscape

‣ min-width-320, -480, -768, -1024

‣ max-width-320, -480, -768, -1024

‣ $.mobile.media()

148

Page 149: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Configuring Defaults

149

Page 150: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Configurable options

‣ subPageUrlKey (string, default: "ui-page")

‣ nonHistorySelectors (string, default: "dialog")

‣ activePageClass (string, default: "ui-page-active")

‣ activeBtnClass (string, default: "ui-page-active")

‣ ajaxEnabled (boolean, default: true)

150

Page 151: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Configurable options

‣ defaultTransition (string, default: 'slide')

‣ loadingMessage (string, default: "loading")

‣ defaultTransition (string, default: 'slide')

‣ metaViewportContent (string, default: "width=device-width, minimum-scale=1, maximum-scale=1")

151

Page 152: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Extend the $.mobile object:

$(document).bind("mobileinit", function(){ $.extend( $.mobile , { foo: bar });});

...or set individually: $(document).bind("mobileinit", function(){ $.mobile.foo = bar;});

Overriding defaults

152

Page 153: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

<script src="jquery.js"></script>

<script src="defaults.js"></script>

<script src="jquery-mobile.js"></script>

Overriding defaults

153

Page 154: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

State of the project

How it's coming along

154

Page 155: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Alpha 3 just released!

155

Page 156: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Some highlights‣ 480 commits since Alpha 2!?

‣ Fixed ~150 bugs

‣ Created 240 Unit tests

‣Increased A-Grade support

‣Added "experimental" datepicker

‣Lots more: http://jquerymobile.com

156

Page 157: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Beta

Mid March

157

Page 158: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

version 1.0

Mid April*

158

Page 159: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

demos & docsjquerymobile.com/demos/1.0a3/

live dev snapshot:jquerymobile.com/test/

159

Page 160: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Notable features on the way

‣ Responsive layouts for tablet & desktop

‣ History.pushstate integration

‣ More controls (spinner, datepicker, etc)

‣ Hooks for enhancing to data templating

160

Page 161: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Test lab

161

Page 162: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Unit tests

162

Page 163: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Interesting developments...

=

163

Page 164: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

contribute on GitHubgithub.com/jquery/jquery-mobile

164

Page 165: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

$ git clone git://github.com/jquery/

jquery-mobile.git

$ cd jquery-mobile

$ make

Build your own!

1

2

3

165

Page 166: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

m.bostonphp.orgBuilt with jQuery Mobile

by your host Michael Bourque

166

Page 167: Jquery Mobile Cross Platform Mobile Web Development HTML5

jQuery Mobile

Thanks!

167