KEMBAR78
Building jQuery Mobile Web Apps | PPTX
Building jQuery Mobile Web Apps

                                by

           Jag Reehal (@jagreehal)




OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Agenda
 About   me

   What this talk is about

   Why use a mobile web UI framework?

   Why jQuery Mobile?

   Look at some of the basic building blocks

   Build an app using jQuery Mobile

   What are the downsides?

   Wrap up




                      OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
About Me

   Live in Cambridge


   I've been a freelance web developer for over twelve years


   Freelance mobile web developer for over two years


   Microsoft and Java certified


   Experience of building native iOS and Android apps


   Barcelona supporter


             OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
This talk is about

    Developing jQuery Mobile web apps


    (jQuery Mobile can be used as the UI for native apps)



    This talk is not about native vs. web apps




              OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Why use a mobile web UI framework?

Because of the




                             BROWSER!


        We want the SAME markup to be rendered CONSISTANTLY across
        browsers




                 OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Why use a mobile web UI framework?

    Who did web development in the days of Netscape?




    My first job after graduating in 2000 was to make Fords ecommerce
    website work with… IE6



    The only way was to have separate files for each browser



    Now I’m a mobile web developer and the browser problem
    has got worse…


              OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
It’s not just about native browsers…




          OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
because users could be using…




             And there’s more I couldn’t fit in!


http://www.webdevelopersnotes.com/articles/mobile-web-browsers-list.php

                        OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Worldwide mobile browser trends for the
last 6 months




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
European mobile browser trends for the
last 6 months




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
North American mobile browser trends for
the last 6 months




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
African mobile browser trends for the last 6
months




          OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Asian mobile browser trends for the last 6
months




          OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
And don’t forget about browser versions!




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
And let’s not forget about device
fragmentation (yes I’m looking at you
Android)




          OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
“write less, do more”



OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
jQuery Mobile

   makes it easy to develop user interfaces for mobile web apps


   has events for touch actions like tap, tap-and-hold, and swipe


   uses progressive enhancement so your UI will adapt to what the browser supports


   is responsive so can adapt to screen size and orientation


   is free to use for commercial projects


   excellent support on its’ forum and on StackOverflow



                      OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Supports more platforms than any other
mobile web UI framework




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Had ‘A’ grade support for mobile browsers
before V1




         OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Is fast and compact

      31kb                        jQuery.min.js


      24kb                        jQuery.mobile.min.js


     7kb                          jQuery.mobile.min.css

 You can use content distribution network (CDN) or self host

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Let’s build a app using jQuery Mobile




 App provides functionality for a user to register and view events and who’s
  attending

 Aim to show how easy it is to build a optimised UI for mobiles and tablets which
  can detect touch specific actions e.g. swipe.

 The code is on github - https://github.com/operationmobile/jQueryMobileDemo

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
I will use




 Just jQuery and the jQuery Mobile Framework NO other JavaScript library

 Minimal custom CSS styles

 No server side code

 A text editor – no need for a special IDE

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
If you’re here (i.e. not viewing this on
slideshare) follow along!

 Follow along http://tinyurl.com/jqmpres       View final http://tinyurl.com/jqmfinal




                     OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 1. Basic page template

 Viewport meta tag for layout

 Uses jQuery CDN for JavaScript and CSS resources

 Uses data-role HTML5 attributes

<div data-role="page">
  <div data-role="header">
     <h1>Page Title</h1>
  </div>
  <div data-role="content">
     <p>Page content goes here.</p>
  </div>
  <div data-role="footer">
     <h4>Page Footer</h4>
  </div>
</div>


FILE: 1_basic_page_template.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 2. Fixed footer

 Use data-position="fixed" to lock the footer to the bottom
  of the page e.g.


<div data-role="footer" data-position="fixed">
  <h4>Page Footer</h4>
</div>




FILE: 2_basic_page_template_fixed_footer.html

                     OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 3. Multi page template

 Can have multiple pages in single html file

 Each page much have a unique Id

 Uses hash tags to navigate between pages e.g.

<a href="#bar">bar</a>

would go to the page

<div data-role="page" id="bar">




FILE: 3_multi_page_template.html

                       OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 4. Page transitions

 Lots of options

 Can configure default using config

 Use on individual links

<a href="#bar" data-role="button" data-
transition="fade">fade</a>

 Uses same transition to go back

 BTW you can make links into buttons using a data-
  role attribute




FILE: 4_multi_page_template_page_transitions.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 5. Multi page fixed footers

 Must specify fixed data position attribute for smooth
  experience otherwise their (initial) position can be random

 Use same data-id attribute in footers

<div data-role="header" data-position="fixed">
  <h1>Foo</h1>
</div>
<div data-role="footer" data-position="fixed" data-id="myfooter">
  <h4>Page Footer</h4>
</div>




FILE: 5_multi_page_template_fixed_header_footer_between_transition.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 6. Multi page back button

 Default is not to show a back button

 Default can be overridden in config

 Or you can add it on page by page basis

<div data-role="page" id="bar" data-add-back-btn="true">
</div>

 Think about if you really need one e.g. browser/device
  back button




FILE: 6_multi_page_template_page_back_button.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 7. Header buttons

 Can specify position to be on the left or right side using
  CSS class

 Can use icon that comes with the framework or use your
  own by using data-icon attribute

<div data-role="header">
  <a href="#" class="ui-btn-right" data-icon="home">Home</a>
  <h1>Page Title</h1>
</div>




FILE: 7_header_button_on_right.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 8. Dialog Pages

 Same as a page but with data-rel attribute in link to specify
  target is a dialog

 Can use same transitions as a page

 Can add custom buttons etc. to close the dialog

<a href="#bar" data-rel="dialog">Bar</a>




FILE: 8_dialogs.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 9. Demo template

 Contains a page with a dialog

 Specifies lang=“en” in head element

 Set the charset to UTF-8




FILE: 9_demo_template.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 10. Add a list

 Want to display a list of events

 Same as normal HTML list but with added attribute
  that jQuery Mobile uses to render list UI

<ul data-role="listview">
  <li><a href="#event">Jag Reehal's talk</a></li>
</ul>




FILE: 10_demo_using_list.html

                     OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 11. Add a list divider

 Use list dividers to enhance the UX of your app

 Add list item with data-role attribute

<ul data-role="listview">
  <li data-role="list-divider">Upcoming Events</li>
  <li><a href="#event">Jag Reehal's talk</a></li>
</ul>




FILE: 11_demo_using_list_divider.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 12. Use data inset for rounded corners

 Adding data-inset attribute gives lists nicer styling

<ul data-role="listview" data-inset="true">

 Margin can also be added manually using CSS styles




FILE: 12_demo_using_list_inset.html

                        OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 13. Create event page

 New page to show event details

 Users can register to attend an event

 View people who are attending




FILE: 13_create_event_page.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 14. Add event actions using buttons

 Use data-role and data-type attributes to align buttons

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




FILE: 14_demo_events_actions_using_buttons_in_footer.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 15. Adding actions in the footer v2

 Use navbar data-role with icons for nice action
  buttons

<div data-role="navbar">
  <ul>
  …
  </ul>
</div>

 Icons can be placed above, below and to the left or
  right of the text




FILE: 15_demo_event_actions_using_nav_in_footer.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 16. Add Registration Form
Way to much code to list! Get the code to see the mark up!




 Uses native controls – unless
  you specify not to

 Running the demo will only show
  input uses type so only numbers
  for a type=“number” field

 Custom controls!




FILE: 16_demo_registration_form.html

                                  OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 17. Page events to handle form submit

 Use page event to set up handler for form submit
  action

 Do NOT use $(document).ready

 Use pagecreate events – see docs for more info




FILE: 17_demo_jQueryMobile_page_events_to_handle_form_submit.html

                  OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 18. Store attendees

 Could use form submit to send data to a server

 In this example add attendee to a JavaScript collection

 Which is not persisted if you refresh the page!

 We’ll add HTML5 local storage later in the demo




FILE: 18_demo_storing_attendees.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 19. Add sample data

 Use the populate button to add items into the
  JavaScript array!

 Not going to be happy if you’re a Real Madrid fan ;)




FILE: 19_demo_add_sample_data.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 20. Show attendees in Event page

 In the pageshow event loop over attendees
  collection and add list item for each attendee

 Don’t forget to call refresh when you’ve added
  or deleted an element!

$('#attendees').listview('refresh');




FILE: 20_demo_show_attendees_in_event_page.html

                        OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 21. Fix list view wrapping

 Use CSS style so that list items don’t have ellipses

.ui-li-desc {white-space: normal;}




FILE: 21_demo_fix_list_view_wrapping.html

                      OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 22. Show list filter

 Built in to the framework is the to filter list options

 Can specify your own placeholder

 In the demo it’s only shown when at least one
  attendee has registered

 Can be added by using data-filter attribute

<ul data-role="listview" data-filter="true">
</ul>




FILE: 22_demo_show_list_filter.html

                      OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 23. Show thumbnails

 Convention based list templates are built in to the
  framework

 If img is the first element in a list item element then it
  will used as a thumbnail

<li>
   <img/>
   <h3>Name</h3>
   <p>Bio</p>
</li>

 Demo uses twitter avatar as thumbnail




FILE: 23_demo_show_thumbnails.html

                     OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 24. Create attendee page

 Show attendee information

 But each link is to the same page… so how can
  you pass data?

     Local storage?

     URL?

     jQuery data?

     Set JavaScript variable?




FILE: 24_create_show_attendee_page.html

                  OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 25. Show attendee page passing id

 Add id attribute to each list item element

 On the click event of a list item element set id as
  current id

 Populate placeholders in attendee details page

 Show the attendees details page




FILE: 25_demo_show_attendee_passing_id.html

                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 26. Attendee Swipe

 Because jQuery Mobile is touch optimised

 Adding touch events is easy!

 In the demo swipe left and right to view attendees!

 This is done by binding to the events

$('#attendee').bind('swiperight', function (e) {});

$('#attendee').bind('swipeleft', function (e) {});




FILE: 26_demo_attendee_swipe.html

                       OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 27. Using the themes

 jQuery Mobile comes with 5 themes




 Themes can be set by using the data-theme attribute

<div data-role="page" id="home" data-theme="e">




FILE: 27_demo_use_theme.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 28. Using the themes on elements

 Can use mixture of themes for different elements e.g.
  theme ‘e’ for the page and theme ‘a’ for a list

<div data-role="page" id="home" data-theme="e">
  <div data-role= "listview" data-theme="a">
  </div>
</div>




FILE: 28_demo_use_theme_on_elements.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Step 29. Using themeroller

 jQuery Mobile tool for creating your own theme -
  http://jquerymobile.com/themeroller/




 Use the UI to create theme, download and link to your custom
  style

<link rel="stylesheet" href="themes/browntheme.css" />




FILE: 29_demo_using_themeroller

                     OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Steps 30. Use HTML5 local storage to store
attendees


 Not a jQuery Mobile feature

         Not checking if localstorage is supported on
         your device - we could have used a polyfill

 Very easy to integrate into demo – only a few lines
  need to be added




FILE: 30_demo_local_storage.html

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Want further inspiration?

 If you want further inspiration checkout the jQuery Mobile
  gallery http://www.jqmgallery.com/




                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Operation Mobile Blog

 Check out my blog series on Yummy Bakes
  (http://tinyurl.com/ybmvc)

 Looking at mobile web UX, performance, etc.

 Version using ASP.NET MVC 4

 Version using knockout.js

 Version using backbone.js

 Create native versions using Phonegap and Titanium
  Mobile

 Use other mobile web frameworks such as Kendo
  UI, jQMobi and Sencha Touch

 Automated UI testing

                  OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
What are the downsides?

 Not suited for building games (but that’s not what it was built for)


 Doesn’t give full native experience


 Favors iOS. A lot of web UI frameworks are much smoother on iOS


     Ask to see a demo on a friends Android/iOS device


     Opportunity for other frameworks to take advantage e.g. jQMobi


 Heavyweight if all you want is to detect touch events – use Zepto.js
  instead


                    OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
So to wrap up

 jQuery Mobile is the most compatible mobile web UI framework out there


 Although not native gives consistent experience across wide range of
  devices with progressive enhancement

 Yes you have to may have to write JavaScript to do anything useful and do
  some custom styling


 But 99.9% of the time you'll just be using the framework!


 You saw how quickly we put together a touch enabled web app


 Can be used to build native apps (talk to your organiser if you want me to do
  a talk on this!)

                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
Feedback

 Let me know after the talk

 On twitter @jagreehal

 By email jag@operationmobile.com




                   OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION

Building jQuery Mobile Web Apps

  • 1.
    Building jQuery MobileWeb Apps by Jag Reehal (@jagreehal) OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 2.
    Agenda  About me  What this talk is about  Why use a mobile web UI framework?  Why jQuery Mobile?  Look at some of the basic building blocks  Build an app using jQuery Mobile  What are the downsides?  Wrap up OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 3.
    About Me Live in Cambridge I've been a freelance web developer for over twelve years Freelance mobile web developer for over two years Microsoft and Java certified Experience of building native iOS and Android apps Barcelona supporter OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 4.
    This talk isabout Developing jQuery Mobile web apps (jQuery Mobile can be used as the UI for native apps) This talk is not about native vs. web apps OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 5.
    Why use amobile web UI framework? Because of the BROWSER! We want the SAME markup to be rendered CONSISTANTLY across browsers OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 6.
    Why use amobile web UI framework? Who did web development in the days of Netscape? My first job after graduating in 2000 was to make Fords ecommerce website work with… IE6 The only way was to have separate files for each browser Now I’m a mobile web developer and the browser problem has got worse… OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 7.
    It’s not justabout native browsers… OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 8.
    because users couldbe using… And there’s more I couldn’t fit in! http://www.webdevelopersnotes.com/articles/mobile-web-browsers-list.php OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 9.
    Worldwide mobile browsertrends for the last 6 months OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 10.
    European mobile browsertrends for the last 6 months OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 11.
    North American mobilebrowser trends for the last 6 months OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 12.
    African mobile browsertrends for the last 6 months OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 13.
    Asian mobile browsertrends for the last 6 months OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 14.
    And don’t forgetabout browser versions! OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 15.
    And let’s notforget about device fragmentation (yes I’m looking at you Android) OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 16.
    “write less, domore” OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 17.
    jQuery Mobile  makes it easy to develop user interfaces for mobile web apps  has events for touch actions like tap, tap-and-hold, and swipe  uses progressive enhancement so your UI will adapt to what the browser supports  is responsive so can adapt to screen size and orientation  is free to use for commercial projects  excellent support on its’ forum and on StackOverflow OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 18.
    Supports more platformsthan any other mobile web UI framework OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 19.
    Had ‘A’ gradesupport for mobile browsers before V1 OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 20.
    Is fast andcompact 31kb jQuery.min.js 24kb jQuery.mobile.min.js 7kb jQuery.mobile.min.css  You can use content distribution network (CDN) or self host OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 21.
    Let’s build aapp using jQuery Mobile  App provides functionality for a user to register and view events and who’s attending  Aim to show how easy it is to build a optimised UI for mobiles and tablets which can detect touch specific actions e.g. swipe.  The code is on github - https://github.com/operationmobile/jQueryMobileDemo OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 22.
    I will use Just jQuery and the jQuery Mobile Framework NO other JavaScript library  Minimal custom CSS styles  No server side code  A text editor – no need for a special IDE OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 23.
    If you’re here(i.e. not viewing this on slideshare) follow along!  Follow along http://tinyurl.com/jqmpres  View final http://tinyurl.com/jqmfinal OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 24.
    Step 1. Basicpage template  Viewport meta tag for layout  Uses jQuery CDN for JavaScript and CSS resources  Uses data-role HTML5 attributes <div data-role="page"> <div data-role="header"> <h1>Page Title</h1> </div> <div data-role="content"> <p>Page content goes here.</p> </div> <div data-role="footer"> <h4>Page Footer</h4> </div> </div> FILE: 1_basic_page_template.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 25.
    Step 2. Fixedfooter  Use data-position="fixed" to lock the footer to the bottom of the page e.g. <div data-role="footer" data-position="fixed"> <h4>Page Footer</h4> </div> FILE: 2_basic_page_template_fixed_footer.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 26.
    Step 3. Multipage template  Can have multiple pages in single html file  Each page much have a unique Id  Uses hash tags to navigate between pages e.g. <a href="#bar">bar</a> would go to the page <div data-role="page" id="bar"> FILE: 3_multi_page_template.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 27.
    Step 4. Pagetransitions  Lots of options  Can configure default using config  Use on individual links <a href="#bar" data-role="button" data- transition="fade">fade</a>  Uses same transition to go back  BTW you can make links into buttons using a data- role attribute FILE: 4_multi_page_template_page_transitions.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 28.
    Step 5. Multipage fixed footers  Must specify fixed data position attribute for smooth experience otherwise their (initial) position can be random  Use same data-id attribute in footers <div data-role="header" data-position="fixed"> <h1>Foo</h1> </div> <div data-role="footer" data-position="fixed" data-id="myfooter"> <h4>Page Footer</h4> </div> FILE: 5_multi_page_template_fixed_header_footer_between_transition.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 29.
    Step 6. Multipage back button  Default is not to show a back button  Default can be overridden in config  Or you can add it on page by page basis <div data-role="page" id="bar" data-add-back-btn="true"> </div>  Think about if you really need one e.g. browser/device back button FILE: 6_multi_page_template_page_back_button.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 30.
    Step 7. Headerbuttons  Can specify position to be on the left or right side using CSS class  Can use icon that comes with the framework or use your own by using data-icon attribute <div data-role="header"> <a href="#" class="ui-btn-right" data-icon="home">Home</a> <h1>Page Title</h1> </div> FILE: 7_header_button_on_right.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 31.
    Step 8. DialogPages  Same as a page but with data-rel attribute in link to specify target is a dialog  Can use same transitions as a page  Can add custom buttons etc. to close the dialog <a href="#bar" data-rel="dialog">Bar</a> FILE: 8_dialogs.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 32.
    Step 9. Demotemplate  Contains a page with a dialog  Specifies lang=“en” in head element  Set the charset to UTF-8 FILE: 9_demo_template.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 33.
    Step 10. Adda list  Want to display a list of events  Same as normal HTML list but with added attribute that jQuery Mobile uses to render list UI <ul data-role="listview"> <li><a href="#event">Jag Reehal's talk</a></li> </ul> FILE: 10_demo_using_list.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 34.
    Step 11. Adda list divider  Use list dividers to enhance the UX of your app  Add list item with data-role attribute <ul data-role="listview"> <li data-role="list-divider">Upcoming Events</li> <li><a href="#event">Jag Reehal's talk</a></li> </ul> FILE: 11_demo_using_list_divider.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 35.
    Step 12. Usedata inset for rounded corners  Adding data-inset attribute gives lists nicer styling <ul data-role="listview" data-inset="true">  Margin can also be added manually using CSS styles FILE: 12_demo_using_list_inset.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 36.
    Step 13. Createevent page  New page to show event details  Users can register to attend an event  View people who are attending FILE: 13_create_event_page.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 37.
    Step 14. Addevent actions using buttons  Use data-role and data-type attributes to align buttons <div data-role="controlgroup" data-type="horizontal"> … </div> FILE: 14_demo_events_actions_using_buttons_in_footer.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 38.
    Step 15. Addingactions in the footer v2  Use navbar data-role with icons for nice action buttons <div data-role="navbar"> <ul> … </ul> </div>  Icons can be placed above, below and to the left or right of the text FILE: 15_demo_event_actions_using_nav_in_footer.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 39.
    Step 16. AddRegistration Form Way to much code to list! Get the code to see the mark up!  Uses native controls – unless you specify not to  Running the demo will only show input uses type so only numbers for a type=“number” field  Custom controls! FILE: 16_demo_registration_form.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 40.
    Step 17. Pageevents to handle form submit  Use page event to set up handler for form submit action  Do NOT use $(document).ready  Use pagecreate events – see docs for more info FILE: 17_demo_jQueryMobile_page_events_to_handle_form_submit.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 41.
    Step 18. Storeattendees  Could use form submit to send data to a server  In this example add attendee to a JavaScript collection  Which is not persisted if you refresh the page!  We’ll add HTML5 local storage later in the demo FILE: 18_demo_storing_attendees.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 42.
    Step 19. Addsample data  Use the populate button to add items into the JavaScript array!  Not going to be happy if you’re a Real Madrid fan ;) FILE: 19_demo_add_sample_data.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 43.
    Step 20. Showattendees in Event page  In the pageshow event loop over attendees collection and add list item for each attendee  Don’t forget to call refresh when you’ve added or deleted an element! $('#attendees').listview('refresh'); FILE: 20_demo_show_attendees_in_event_page.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 44.
    Step 21. Fixlist view wrapping  Use CSS style so that list items don’t have ellipses .ui-li-desc {white-space: normal;} FILE: 21_demo_fix_list_view_wrapping.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 45.
    Step 22. Showlist filter  Built in to the framework is the to filter list options  Can specify your own placeholder  In the demo it’s only shown when at least one attendee has registered  Can be added by using data-filter attribute <ul data-role="listview" data-filter="true"> </ul> FILE: 22_demo_show_list_filter.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 46.
    Step 23. Showthumbnails  Convention based list templates are built in to the framework  If img is the first element in a list item element then it will used as a thumbnail <li> <img/> <h3>Name</h3> <p>Bio</p> </li>  Demo uses twitter avatar as thumbnail FILE: 23_demo_show_thumbnails.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 47.
    Step 24. Createattendee page  Show attendee information  But each link is to the same page… so how can you pass data?  Local storage?  URL?  jQuery data?  Set JavaScript variable? FILE: 24_create_show_attendee_page.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 48.
    Step 25. Showattendee page passing id  Add id attribute to each list item element  On the click event of a list item element set id as current id  Populate placeholders in attendee details page  Show the attendees details page FILE: 25_demo_show_attendee_passing_id.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 49.
    Step 26. AttendeeSwipe  Because jQuery Mobile is touch optimised  Adding touch events is easy!  In the demo swipe left and right to view attendees!  This is done by binding to the events $('#attendee').bind('swiperight', function (e) {}); $('#attendee').bind('swipeleft', function (e) {}); FILE: 26_demo_attendee_swipe.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 50.
    Step 27. Usingthe themes  jQuery Mobile comes with 5 themes  Themes can be set by using the data-theme attribute <div data-role="page" id="home" data-theme="e"> FILE: 27_demo_use_theme.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 51.
    Step 28. Usingthe themes on elements  Can use mixture of themes for different elements e.g. theme ‘e’ for the page and theme ‘a’ for a list <div data-role="page" id="home" data-theme="e"> <div data-role= "listview" data-theme="a"> </div> </div> FILE: 28_demo_use_theme_on_elements.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 52.
    Step 29. Usingthemeroller  jQuery Mobile tool for creating your own theme - http://jquerymobile.com/themeroller/  Use the UI to create theme, download and link to your custom style <link rel="stylesheet" href="themes/browntheme.css" /> FILE: 29_demo_using_themeroller OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 53.
    Steps 30. UseHTML5 local storage to store attendees  Not a jQuery Mobile feature Not checking if localstorage is supported on your device - we could have used a polyfill  Very easy to integrate into demo – only a few lines need to be added FILE: 30_demo_local_storage.html OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 54.
    Want further inspiration? If you want further inspiration checkout the jQuery Mobile gallery http://www.jqmgallery.com/ OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 55.
    Operation Mobile Blog Check out my blog series on Yummy Bakes (http://tinyurl.com/ybmvc)  Looking at mobile web UX, performance, etc.  Version using ASP.NET MVC 4  Version using knockout.js  Version using backbone.js  Create native versions using Phonegap and Titanium Mobile  Use other mobile web frameworks such as Kendo UI, jQMobi and Sencha Touch  Automated UI testing OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 56.
    What are thedownsides?  Not suited for building games (but that’s not what it was built for)  Doesn’t give full native experience  Favors iOS. A lot of web UI frameworks are much smoother on iOS  Ask to see a demo on a friends Android/iOS device  Opportunity for other frameworks to take advantage e.g. jQMobi  Heavyweight if all you want is to detect touch events – use Zepto.js instead OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 57.
    So to wrapup  jQuery Mobile is the most compatible mobile web UI framework out there  Although not native gives consistent experience across wide range of devices with progressive enhancement  Yes you have to may have to write JavaScript to do anything useful and do some custom styling  But 99.9% of the time you'll just be using the framework!  You saw how quickly we put together a touch enabled web app  Can be used to build native apps (talk to your organiser if you want me to do a talk on this!) OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION
  • 58.
    Feedback  Let meknow after the talk  On twitter @jagreehal  By email jag@operationmobile.com OPERATION MOBILE - HIRE US FOR YOUR MOBILE MISSION