+ All Categories
Transcript
Page 1: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Rapidly Develop Mobile Web Applications with

Wednesday, October 19, 11

Page 2: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Who am I?

Wednesday, October 19, 11

Page 3: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 4: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 5: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 6: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

http://learn.appendto.com

Wednesday, October 19, 11

Page 7: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 8: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Many More ...

Wednesday, October 19, 11

Page 9: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The Mobile Frontier ...

Wednesday, October 19, 11

Page 10: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

6.9 Billion People

Wednesday, October 19, 11

Page 11: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Mobile is available to 90%

Wednesday, October 19, 11

Page 12: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

5.3 Billion+ Active Subscriptions

http://www.itu.int/ITU-D/ict/material/FactsFigures2010.pdf

Wednesday, October 19, 11

Page 14: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

10+ billion by 2013

Wednesday, October 19, 11

Page 15: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 16: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Know Better ... Do Better

?

Wednesday, October 19, 11

Page 17: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The is the webPeople expect it to work everywhere

Wednesday, October 19, 11

Page 18: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The Solution?

Wednesday, October 19, 11

Page 19: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 20: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

jQuery Philosophy ...

Wednesday, October 19, 11

Page 21: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Unified System

Universal Access

Easy Development

Wednesday, October 19, 11

Page 22: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

One Codebase - Multiple Platforms

Wednesday, October 19, 11

Page 23: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Desktop Too!

Wednesday, October 19, 11

Page 24: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

In <3 with Web Standards

Wednesday, October 19, 11

Page 25: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Built on jQuery Core ...

Wednesday, October 19, 11

Page 26: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Familiar API Style

It’s just jQuery!

$( document ).delegate( ".city", "click", function ( e ) { $( "#dialog" ).one( "pagehide", function () { $.mobile.changePage( 'cities.php' ); }).dialog( "close" ); });

Wednesday, October 19, 11

Page 27: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Small Filesize

Wednesday, October 19, 11

Page 28: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Mobile Browser Grades

Basic HTMLCBA

Enhanced experience without Ajax

Full experience with Ajax-based animated page transitions.

Wednesday, October 19, 11

Page 29: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Graded Browser Support

Wednesday, October 19, 11

Page 30: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Doesn’t Break the Web

Wednesday, October 19, 11

Page 31: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Unified Experience

Wednesday, October 19, 11

Page 32: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Accessible

Wednesday, October 19, 11

Page 33: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Normalizes Input Paradigms

Wednesday, October 19, 11

Page 34: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Compiles to Native

+ =

Wednesday, October 19, 11

Page 35: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The Con’s ...

Wednesday, October 19, 11

Page 36: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Perceived Performance

Wednesday, October 19, 11

Page 37: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Native Look & Feel

vs.

Wednesday, October 19, 11

Page 38: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Device API’s

Wednesday, October 19, 11

Page 39: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Offline Access

( )

Wednesday, October 19, 11

Page 40: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

These are hard problems ...

Wednesday, October 19, 11

Page 41: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Choose the right tool ...

Wednesday, October 19, 11

Page 42: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Current Project Status

Wednesday, October 19, 11

Page 43: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Just released jQuery Mobile RC1

Wednesday, October 19, 11

Page 44: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 45: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 46: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Wednesday, October 19, 11

Page 47: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

More at http://jqmgallery.com

Wednesday, October 19, 11

Page 48: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Standard in Adobe CS5.5

Wednesday, October 19, 11

Page 49: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Shipping in Visual Studio Soon ...

Wednesday, October 19, 11

Page 50: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Lets dive in ...

Wednesday, October 19, 11

Page 51: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Download the code

http://jquerymobile.com/download https://github.com/jquery/jquery-mobile

or use a CDN ...

Wednesday, October 19, 11

Page 52: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Pages

Wednesday, October 19, 11

Page 53: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Your First Page!<!DocType HTML>

<html> <head> <meta charset=”utf-8”> <title>My first jQuery Mobile Page!</title> </head> <body> .... </body></html>

Wednesday, October 19, 11

Page 57: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Building your Page<body>

<div data-role=”page”>

<p>Hello World!</p>

</div>

</body>

Wednesday, October 19, 11

Page 58: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The role of data attributes ...<body>

<div data-role=”page”>

<p>Hello World!</p>

</div>

</body>

Wednesday, October 19, 11

Page 59: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Full Sample Page<body> <div data-role=”page”>

<div data-role=”header”> ... </div>

<div data-role=”content”> ... </div>

<div data-role=”footer”> ... </div>

</div></body>

Wednesday, October 19, 11

Page 60: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Lists

Wednesday, October 19, 11

Page 61: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Basic List<div data-role=”content”>

<h2>Hello World!</h2> <ul> <li>jQuery</li> <li>jQuery UI</li> <li>jQuery Mobile</li> <li>QUnit</li> </ul>

</div>

Wednesday, October 19, 11

Page 62: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Add the List View Role<div data-role=”content”>

<h2>Hello World!</h2> <ul data-role="listview"> <li>jQuery</li> <li>jQuery UI</li> <li>jQuery Mobile</li> <li>QUnit</li> </ul>

</div>

Wednesday, October 19, 11

Page 63: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Inset Style<div data-role=”content”>

<h2>Hello World!</h2> <ul data-role="listview" data-inset="true" > <li>jQuery</li> <li>jQuery UI</li> <li>jQuery Mobile</li> <li>QUnit</li> </ul>

</div>

Wednesday, October 19, 11

Page 64: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Add Links <ul data-role="listview" data-inset="true"> <li> <a href=”http://jquery.com”> jQuery </a> </li> ... </ul>

Wednesday, October 19, 11

Page 65: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

More Examples ...

Wednesday, October 19, 11

Page 66: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Ordered Lists<div data-role=”content”>

<h2>Hello World!</h2> <ol data-role="listview"> <li>jQuery</li> <li>jQuery UI</li> <li>jQuery Mobile</li> <li>QUnit</li> </ol>

</div>

Wednesday, October 19, 11

Page 67: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Nested Lists = Drillable Pages

Wednesday, October 19, 11

Page 68: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Count Bubbles

<ul data-role="listview">

<li><a href=”http://jquery.com”> jQuery <span class="ui-li-count">1.6.4</span> </a></li>

...</ul>

Wednesday, October 19, 11

Page 69: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

List Dividers<ul data-role="listview">

<li data-role="list-divider">Core</li> <li>jQuery</li>

<li data-role="list-divider">UI</li> <li>jQuery UI</li> <li>jQuery Mobile</li>

<li data-role="list-divider">Testing</li> <li>QUnit</li></ul>

Wednesday, October 19, 11

Page 70: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Filter Bar<div data-role=”content”>

<h2>Hello World!</h2> <ul data-role="listview" data-filter="true"> .... </ul>

</div>

Wednesday, October 19, 11

Page 71: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Adding List Items

Wednesday, October 19, 11

Page 72: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Append, then Refresh!$(‘ul#jquery’).

.append(

‘<li><a href=”http://sizzlejs.com”>Sizzle JS</a></li>’

).listview( ‘refresh’ );

Wednesday, October 19, 11

Page 73: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Theming

Wednesday, October 19, 11

Page 74: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Basic Theming<div data-role=”page” data-theme=”a”>

<div data-role=”content”> .... </div>

</div>

Wednesday, October 19, 11

Page 75: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Side by Side

Wednesday, October 19, 11

Page 76: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

ThemeRoller

Wednesday, October 19, 11

Page 77: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Links & Navigation

Wednesday, October 19, 11

Page 78: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

External Links <ul data-role="listview" data-inset="true" data-theme=”e”> <li> <a href=”http://jquery.com”> jQuery </a> </li> ... </ul>

Wednesday, October 19, 11

Page 79: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Internal + Hijax + DOM Injection <ul data-role="listview" data-inset="true" data-theme=”e”> <li> <a href=”jquery.html”> jQuery </a> </li> ... </ul>

Click!

Wednesday, October 19, 11

Page 80: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Internal + Hijax + DOM Injection

/index.html /jquery.html

Wednesday, October 19, 11

Page 81: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Internal + Hijax + DOM Injection

/jquery.html/index.html

Wednesday, October 19, 11

Page 82: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Internal + Hijax + DOM Injection

/jquery.html/index.html

Wednesday, October 19, 11

Page 83: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Transitions

Wednesday, October 19, 11

Page 84: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

External Links <ul data-role="listview" data-inset="true" data-theme=”e”> <li> <a href=”http://jquery.com” data-transition="pop"> jQuery a’ Poppin </a> </li> ... </ul>

Wednesday, October 19, 11

Page 85: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Multi-Page & Pre-Fetch

Wednesday, October 19, 11

Page 86: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Multiple Pages, One DOM<body>

<div data-role=”page” id=”page1”> <p>Hello World!</p> </div>

<div data-role=”page” id=”page2”> <p>Hello World!</p> </div>

</body>

Wednesday, October 19, 11

Page 87: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Pre-Fetching<body>

<div data-role=”page” id=”page1”> <p>Hello World!</p> <a href="prefetchMe.html" data-prefetch> ... </a> </div>

<div data-role=”page” id=”page2”> <p>Hello World!</p> </div>

</body>

Wednesday, October 19, 11

Page 88: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Forms

Wednesday, October 19, 11

Page 89: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Basic Form with Labels<div data-role="content">

<form action="#" method="get"> <label for="example">Example:</label> <input type="text" name="example" value="" /> </form>

</div>

Wednesday, October 19, 11

Page 90: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Containers<div data-role="content"> <form action="#" method="get">

<div data-role="fieldcontain"> <label for="example">Example:</label> <input type="text" name="example" value="" /> </div>

</form></div>

Wednesday, October 19, 11

Page 91: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Optimized for Width Changes

Wednesday, October 19, 11

Page 92: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Progressive Enhancement

Wednesday, October 19, 11

Page 93: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Text Input<div data-role="content"> <form action="#" method="get">

<div data-role="fieldcontain"> <label for="example">Example:</label> <input type="text" name="example" value="" /> </div>

</form></div>

Wednesday, October 19, 11

Page 94: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Text Input Helpers

”password” ”email” ”tel”

Wednesday, October 19, 11

Page 95: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Text Area’s Grow

Wednesday, October 19, 11

Page 96: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Flip Switch<form action="#" method="get"> <div data-role="fieldcontain"> <label for="slide">Flip switch:</label> <select name="slide" data-role="slider"> <option value="off">Off</option> <option value="on">On</option> </select> </div> </form></div>

Wednesday, October 19, 11

Page 97: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Radio Buttons<form action="#" method="get"> <div data-role="fieldcontain"> <input type="radio" name="choice-1" value="choice-1"> <label for="choice-1">Apples</label> </div> ... </form></div>

Wednesday, October 19, 11

Page 98: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Checkboxes Too<form action="#" method="get"> <div data-role="fieldcontain"> <input type="checkbox" name="choice-1" value="choice-1"> <label for="choice-1">Apples</label> </div> ... </form></div>

Wednesday, October 19, 11

Page 99: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Horizontal Set<form action="#" method="get"> <div data-role="fieldcontain" data-type=”horizontal”> <input type="checkbox" name="choice-1" value="choice-1"> <label for="choice-1">Apples</label> </div> ... </form></div>

Wednesday, October 19, 11

Page 100: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Select Lists<form action="#" method="get"> <div data-role="fieldcontain"> <label for="choice-1"> Choose shipping method:</label> <select name="choice-1"> <option value="std">Standard: 7 day </option> ... </select> </div> </form></div>

Wednesday, October 19, 11

Page 101: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Select Lists<form action="#" method="get"> <div data-role="fieldcontain"> <label for="choice-1"> Choose shipping method:</label> <select name="choice-1"> <option value="std">Standard: 7 day </option> ... </select> </div> </form></div>

Wednesday, October 19, 11

Page 102: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Select Lists - Non-Native<form action="#" method="get"> <div data-role="fieldcontain"> <label for="choice-1"> Choose shipping method:</label> <select name="choice-1" data-native-menu="false"> <option value="std">Standard: 7 day </option> ... </select> </div> </form>

Wednesday, October 19, 11

Page 103: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Extra’s

Wednesday, October 19, 11

Page 104: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Dialog’s<div data-role="content">

<a href="foo.html" data-rel="dialog">Open dialog</a>

</div>

Wednesday, October 19, 11

Page 105: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Button’s<div data-role="content">

<a href="#" data-role="button"> Link Button</a>

<a href="#" data-role="button" data-icon="star">Star Icon!</a>

</div>

Wednesday, October 19, 11

Page 106: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Toolbar’s<div data-role="page">

<div data-role="header" data-position="inline"> <a href="index.html" data-icon="delete">Cancel</a> <h1>Edit Contact</h1> <a href="index.html" data-icon="check">Save</a> </div>

</div>

Wednesday, October 19, 11

Page 107: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Navbar’s<div data-role="page"> .... <div data-role="footer">

<div data-role="navbar"> <ul> <li>Summary</li> ... </ul> </div> </div></div>

Wednesday, October 19, 11

Page 108: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Fixed Positioning<div data-role="page">

<div data-role="header" data-position="fixed"> <h1>Fixed toolbars</h1> </div>

</div>

Wednesday, October 19, 11

Page 109: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Persistent Footer Bar<div data-role="footer">

<div data-role="navbar" class="ui-state-persist"> <p><a href=”#”>Friends</a></p> </div></div>

Wednesday, October 19, 11

Page 110: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Events

Wednesday, October 19, 11

Page 111: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

New Events

‣ tap, taphold

‣ swipe, swipeleft, swiperight

‣ scrollstart, scrollstop

‣orientationchange

‣ Page Load: pageloadbefore, pageload, pageloadfailed

‣ Page Change: pagechangebefore, pagechange, pagechangefailed

‣Many More!

Wednesday, October 19, 11

Page 112: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Virtual Mouse Events

‣ vmouseover

‣ vmousedown

‣ vmousemove

‣ vmouseup

‣ vmouseclick - WARNING!

‣ vmousecancel

Wednesday, October 19, 11

Page 113: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

API Methods

Wednesday, October 19, 11

Page 114: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Changing Pages// Mimic’s a ‘tap’ or ‘click’$.mobile.changePage( ‘about/us.html’ OR $(‘#about’), { /* options */ }); // Fetches external URL, inserts it into the DOM$.mobile.loadPage( ‘about/us.html’, { /* options */ });

Wednesday, October 19, 11

Page 115: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Loading Message$.mobile.showLoadingMessage()

$.mobile.hideLoadingMessage()

Wednesday, October 19, 11

Page 116: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

The Data Question ...

Wednesday, October 19, 11

Page 117: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Those data- attributes ...Don’t use:

$.data

Use:

jqmData() andjqmRemoveData()

Wednesday, October 19, 11

Page 118: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

URL’s & Paths

Wednesday, October 19, 11

Page 120: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

http://filamentgroup.com

Thanks to the Filament Group!

Wednesday, October 19, 11

Page 121: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Thanks to the jQuery Mobile Team!

Wednesday, October 19, 11

Page 122: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Thanks to the Sponsors!

Wednesday, October 19, 11

Page 123: Rapidly Develop Mobile Web Applications with jQuery Mobile

@mikehostetler

Thank You!@mikehostetler

http://mike-hostetler.comhttp://learn.appendto.com

Links: http://bitly.com/neWK0vRate: http://j.mp/nQgs8V

Wednesday, October 19, 11


Top Related