SlideShare a Scribd company logo
Visit https://ebookultra.com to download the full version and
explore more ebooks or textbooks
Pro jQuery 2 0 Second Edition Adam Freeman
_____ Click the link below to download _____
https://ebookultra.com/download/pro-jquery-2-0-second-
edition-adam-freeman/
Explore and download more ebooks or textbooks at ebookultra.com
Here are some recommended products that we believe you will be
interested in. You can click the link to download.
Pro ASP NET 4 5 in C Fifth Edition Adam Freeman
https://ebookultra.com/download/pro-asp-net-4-5-in-c-fifth-edition-
adam-freeman/
Microsoft Reference Architecture for Commerce Version 2 0
Pro Other 1st Edition Microsoft Corporation
https://ebookultra.com/download/microsoft-reference-architecture-for-
commerce-version-2-0-pro-other-1st-edition-microsoft-corporation/
Pro ASP NET MVC 2 Framework Second Edition Steven
Sanderson
https://ebookultra.com/download/pro-asp-net-mvc-2-framework-second-
edition-steven-sanderson/
Pro Netbeans IDE 6 Rich Client Platform Edition Adam Myatt
https://ebookultra.com/download/pro-netbeans-ide-6-rich-client-
platform-edition-adam-myatt/
Learning jQuery 3 Build interesting interactive sites
using jQuery by automating common tasks and simplifying
the complicated ones 5th Edition Adam Boduch
https://ebookultra.com/download/learning-jquery-3-build-interesting-
interactive-sites-using-jquery-by-automating-common-tasks-and-
simplifying-the-complicated-ones-5th-edition-adam-boduch/
ActionScript 2 0 Garage Tara Calishain
https://ebookultra.com/download/actionscript-2-0-garage-tara-
calishain/
Creating Mobile Apps with jQuery Mobile Second Edition
Matthews
https://ebookultra.com/download/creating-mobile-apps-with-jquery-
mobile-second-edition-matthews/
Multi Platinum Pro Tools Advanced Editing Pocketing and
Autotuning Techniques Nathan Adam
https://ebookultra.com/download/multi-platinum-pro-tools-advanced-
editing-pocketing-and-autotuning-techniques-nathan-adam/
Beginning ASP NET 2 0 Chris Hart
https://ebookultra.com/download/beginning-asp-net-2-0-chris-hart/
Pro jQuery 2 0 Second Edition Adam Freeman
Pro jQuery 2 0 Second Edition Adam Freeman Digital
Instant Download
Author(s): AdamFreeman
ISBN(s): 9781430263883, 1430263881
Edition: 2
File Details: PDF, 38.21 MB
Year: 2013
Language: english
Pro jQuery 2 0 Second Edition Adam Freeman
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
v
Contents at a Glance
About the Author������������������������������������������������������������������������������������������������������������� xxix
About the Technical Reviewer����������������������������������������������������������������������������������������� xxxi
Acknowledgments��������������������������������������������������������������������������������������������������������� xxxiii
Chapter 1: Putting jQuery in Context
■
■ ���������������������������������������������������������������������������������1
Chapter 2: HTML Primer
■
■ ��������������������������������������������������������������������������������������������������11
Chapter 3: CSS Primer
■
■ �����������������������������������������������������������������������������������������������������33
Chapter 4: JavaScript Primer
■
■ ������������������������������������������������������������������������������������������61
Chapter 5: jQuery Basics
■
■ �������������������������������������������������������������������������������������������������93
Chapter 6: Managing the Element Selection
■
■ �����������������������������������������������������������������117
Chapter 7: Manipulating the DOM
■
■ ���������������������������������������������������������������������������������145
Chapter 8: Manipulating Elements
■
■ ��������������������������������������������������������������������������������177
Chapter 9: Working with Events
■
■ ������������������������������������������������������������������������������������211
Chapter 10: Using jQuery Effects
■
■ �����������������������������������������������������������������������������������235
Chapter 11: Refactoring the Example: Part I
■
■ �����������������������������������������������������������������267
Chapter 12: Using Data Templates
■
■ 
���������������������������������������������������������������������������������281
Chapter 13: Working with Forms
■
■ 
�����������������������������������������������������������������������������������309
Chapter 14: Using Ajax: Part I
■
■ ���������������������������������������������������������������������������������������351
Chapter 15: Using Ajax: Part II
■
■ ��������������������������������������������������������������������������������������381
Chapter 16: Refactoring the Example: Part II
■
■ ����������������������������������������������������������������411
■ Contents at a Glance
vi
Chapter 17: Setting Up jQuery UI
■
■ �����������������������������������������������������������������������������������449
Chapter 18: Using the Button, Progress Bar, and Slider Widgets
■
■ ����������������������������������457
Chapter 19: Using the Autocomplete and Accordion Widgets
■
■ ���������������������������������������491
Chapter 20: Using the Tabs Widget
■
■ 
��������������������������������������������������������������������������������527
Chapter 21: Using the Datepicker Widget
■
■ 
����������������������������������������������������������������������555
Chapter 22: Using the Dialog and Spinner Widgets
■
■ �������������������������������������������������������587
Chapter 23: Using the Menu and Tooltip Widgets
■
■ ����������������������������������������������������������621
Chapter 24: Using the Drag-and-Drop Interactions
■
■ �������������������������������������������������������653
Chapter 25: Using the Other Interactions
■
■ ����������������������������������������������������������������������683
Chapter 26: Refactoring the Example: Part III
■
■ ���������������������������������������������������������������709
Chapter 27: Getting Started with jQuery Mobile
■
■ 
������������������������������������������������������������737
Chapter 28: Pages, Themes  Layouts
■
■ ��������������������������������������������������������������������������763
Chapter 29: The Dialog  Popup Widgets
■
■ ����������������������������������������������������������������������797
Chapter 30: Buttons and Collapsible Blocks
■
■ �����������������������������������������������������������������823
Chapter 31: Using jQuery Mobile Forms
■
■ ������������������������������������������������������������������������847
Chapter 32: Using Lists and Panels
■
■ �������������������������������������������������������������������������������879
Chapter 33: Refactoring the Example: Part IV
■
■ ���������������������������������������������������������������903
Chapter 34: Using the jQuery Utility Methods
■
■ ���������������������������������������������������������������929
Chapter 35: The jQuery UI Effects  CSS Framework
■
■ ����������������������������������������������������945
Chapter 36: Using Deferred Objects
■
■ ������������������������������������������������������������������������������963
Index���������������������������������������������������������������������������������������������������������������������������������995
1
Chapter 1
Putting jQuery in Context
At its heart, jQuery does something that sounds dull: it lets you modify the contents of web pages by manipulating
the model that the browser creates when it processes the HTML, a process known as DOM (Document Object Model)
manipulation, which I describe in detail later. If you have picked up this book, then you have probably already
done some DOM manipulation, using either another JavaScript library or the built-in web browser API (application
programming interface), and now you want to do it in a better way.
jQuery goes beyond better. It makes DOM manipulation a pleasure and, on occasion, an actual joy. There is
something elegant and graceful about the way that jQuery works that transforms a task that can be pure drudgery into
something that is simple and easy. Once you start using jQuery, there is no going back. Here are the top reasons that
I use jQuery in my projects.
• jQuery is expressive. I can do more work with much code.
• jQuery methods apply to multiple elements. The DOM API approach of select-iterate-modify is
gone, meaning fewer for loops to iterate through elements and fewer mistakes.
• jQuery deals with implementation differences between browsers. I don’t have to worry about
whether Internet Explorer (IE) supports a feature in an odd way, for example; I just tell jQuery
what I want, and it works around the implementation differences for me.
• jQuery is open source. When I don’t understand how something works or I don’t quite get the
result I expect, I can read through the JavaScript code and, if needed, make changes.
The genius of jQuery is that it takes something that is a major grind in web development and makes it simple,
quicker, and easier. I can’t ask for more than that. Not everything is perfect, of course, and there are one or two rough
edges, which I’ll explain as I get into the details. But even with the occasional flaw, I love working with jQuery, and
I hope you will find it equally compelling and enjoyable to use.
Understanding jQuery UI and jQuery Mobile
In addition to the core jQuery library, I also cover jQuery UI and jQuery Mobile, which are user interface (UI) libraries
built on top of jQuery. jQuery UI is a general-purpose UI toolkit intended to be used on any device, and jQuery Mobile
is designed for use with touch-enabled devices such as smartphones and tablets.
Understanding jQuery Plug-ins
jQuery plug-ins extend the functionality of the basic library. Some plug-ins are so good and so widely used that I have
covered them in this book. There are a lot of plug-ins available (although the quality can vary), so if you don’t like the
plug-ins I describe in this book, you can be confident that an alternative approach is available.
Chapter 1 ■ Putting jQuery in Context
2
What Do I Need to Know?
Before reading this book, you should be familiar with the basics of web development, have an understanding of
how HTML and CSS (cascading style sheets) work, and, ideally, have a working knowledge of JavaScript. If you are
a little hazy on some of these details, I provide refreshers for HTML, CSS, and JavaScript in Chapters 2, 3, and 4. You
won’t find a comprehensive reference for HTML elements and CSS properties, though. There just isn’t the space in a
book about jQuery to cover HTML in its entirety. If you want a complete reference for HTML and CSS, then I suggest
another of my books: The Definitive Guide to HTML5, also published by Apress.
What Is the Structure of This Book?
This book is split into six parts, each of which covers a set of related topics.
Part 1: Getting Ready
Part 1 of this book provides the information you need to get ready for the rest of the book. It includes this chapter and
primers/refreshers for HTML, CSS, and JavaScript. Later in this chapter, I’ll describe the software that you will need in
order to follow along.
Part 2: Working with jQuery
Part 2 of this book introduces you to the jQuery library, starting with a basic example and building up to include each
of the core features: element selection, DOM manipulation, events, and effects.
Part 3: Working with Data and Ajax
Part 3 of this book shows how jQuery makes it possible to work with inline or remote data. I show you how you can
generate HTML content from data, how you can validate data entered into web forms, and how you can use jQuery to
perform asynchronous operations, including Ajax.
Part 4: Using jQuery UI
jQuery UI is one of the two user interface libraries that I describe in this book. Built on, and integrated with, the core
jQuery library, jQuery UI allows you to create rich and responsive interfaces for your web applications.
Part 5: Using jQuery Mobile
jQuery Mobile is the other user interface library that I cover in this book. jQuery Mobile is built on top of jQuery and
incorporates some basic feature from jQuery UI but has been optimized for creating smartphone and tablet interfaces.
Fewer UI widgets are available in jQuery Mobile, but those that are supported are optimized for touch interaction and
for presentation on smaller displays.
Part 6: Advanced Features
The final part of this book describes some jQuery and jQuery UI features not commonly used but which can be helpful
in complex projects. These are advanced features that require a better understanding of HTML, CSS, and jQuery itself.
When reading Chapter 36, a basic knowledge of asynchronous programming is very helpful.
Chapter 1 ■ Putting jQuery in Context
3
What’s New in This Edition?
Since the first edition of this book, jQuery, jQuery UI, and jQuery Mobile have all undergone substantial changes.
What’s New for Core jQuery?
The API for the core jQuery library is remarkably stable. Some years ago, the jQuery team starting listing changes that
they intended to make, and these were implemented with the release of jQuery version 1.9. Some of these changes are
quite substantial and I have indicated the changes in each chapter throughout Part 2 of this book.
The good news is that these changes are very rare and the API is likely to remain stable for several years. That’s
not to say that new features won’t be added, but the code that you develop today will continue to work without
modification for some time to come.
The bad news is that the jQuery team did something unusual when they released jQuery 1.9—they also released
jQuery 2.0, and thus they split development into two lines of parallel releases: jQuery 1.x and jQuery 2.x. Both release
lines have the same API but jQuery 2.x doesn’t support versions 6, 7, and 8 of IE.
The older versions of IE are notorious in their non-standard approach to HTML, CSS, and JavaScript, and
removing all of the checks for odd behavior and the associated workarounds makes jQuery 2.x smaller and faster.
Tip
■
■  At the time of this writing, the current versions of jQuery are 2.0.2 and 1.10.1. It is important to understand that
jQuery 2.0.2 doesn’t supersede version 1.10.1. They are both the latest release and the only difference is that jQuery
1.10.1 preserves support for older versions of Internet Explorer.
You should use jQuery 2.x if you are sure that none of your users will have Internet Explorer 6, 7, or 8. If that is not
the case—or if you are not sure—then you should use jQuery 1.x. These versions of IE are still widely used, especially
in large corporations, and you should think carefully about the effect of using the 2.x line.
There are no legacy users in the idealized world of programming books, and I’ll be using the jQuery 2.0.2 library
throughout most this book—but you can substitute any version of the jQuery 1.x line (from version 1.9 onward) and
get the same result and preserve support for the old versions of IE.
Tip
■
■  I use jQuery 1.x in Part 4, when I describe jQuery Mobile. jQuery Mobile tends to lag behind the main jQuery
release and, as I write this, only supports jQuery 1.x.
What’s New for jQuery UI?
jQuery UI has also been updated. The API for using the existing user interface widgets has been updated to be more
consistent and to work more closely with the HTML elements that underpin them and some new widgets have been
added. Throughout Part 3 of this book, you will find that I show the important changes at the start of each chapter, just
as I did for the changes to jQuery itself in Part 2.
What’s New for jQuery Mobile?
jQuery Mobile has matured a lot since the previous edition of this book. The API has been normalized, new widgets
have been added, and the overall developer experience is much more consistent with jQuery and jQuery UI. To reflect
this maturity, I have completely rewritten Part 4 to bring it in line with the rest of the book. There are more examples,
reference tables, and demonstrations of specific features.
Chapter 1 ■ Putting jQuery in Context
4
What Else Is New?
From Chapter 12 onward, I use templates to generate HTML elements from data. This is an important technique
and I use it liberally. The library that I used in the previous edition has reached the end of its life and I have chosen
a replacement. The new library doesn’t come with direct integration into jQuery and so in Chapter 12, I provide a
custom plug-in that makes using the template library I selected easy to use with jQuery. All of the examples that follow
Chapter 12 have been revised to use the new library.
I changed the toolset that I use for testing mobile applications, preferring to use a cloud-based testing service
rather than maintaining my own emulators. I explain why I have done this in Chapter 27.
Are There Lots of Examples?
There are loads of examples. One of the nice aspects of jQuery is that almost any task can be performed in several
different ways, allowing you to develop a personal jQuery style. To show the different approaches you can take, I have
included a lot of different examples—so many, in fact, that I include the complete HTML document you are working
with only once in some chapters in order to fit everything in. The first example in every chapter is a complete HTML
document, as shown in Listing 1-1, for example.
Listing 1-1. A Complete Example Document
!DOCTYPE html
html
head
titleExample/title
link rel=stylesheet type=text/css href=styles.css/
script src=jquery-2.0.2.js type=text/javascript/script
script type=text/javascript
$(document).ready(function () {
$(img:odd).mouseenter(function (e) {
$(this).css(opacity, 0.5);
}).mouseout(function (e) {
$(this).css(opacity, 1.0);
});
});
/script
/head
body
h1Jacqui's Flower Shop/h1
form method=post
div id=oblock
div class=dtable
div id=row1 class=drow
div class=dcell
img src=aster.png/label for=asterAster:/label
input name=aster value=0 required
/div
div class=dcell
img src=daffodil.png/label for=daffodilDaffodil:/label
input name=daffodil value=0 required 
/div
div class=dcell
Chapter 1 ■ Putting jQuery in Context
5
img src=rose.png/label for=roseRose:/label
input name=rose value=0 required
/div
/div
div id=row2 class=drow
div class=dcell
img src=peony.png/label for=peonyPeony:/label
input name=peony value=0 required
/div
div class=dcell
img src=primula.png/label for=primulaPrimula:/label
input name=primula value=0 required
/div
div class=dcell
img src=snowdrop.png/label for=snowdropSnowdrop:/label
input name=snowdrop value=0 required
/div
/div
/div
/div
div id=buttonDivbutton type=submitPlace Order/button/div
/form
/body
/html
This listing is taken from Chapter 5. Don’t worry about what it does; just be aware that the first example in each
chapter is a complete HTML document, similar to the one shown in Listing 1-1. Almost all of the examples are based
around the same basic HTML document, which displays a simple flower shop. It isn’t the most exciting example, but it
is self-contained and includes all of the things we are interested in when working with jQuery.
For the second and subsequent examples, I only show you the elements that change. This is generally just the
script element, which is where your jQuery code lives. You can spot a partial listing because it starts and ends with
ellipsis (...), as shown in Listing 1-2.
Listing 1-2. A Partial Listing
...
script type=text/javascript
jQuery(document).ready(function () {
jQuery(img:odd).mouseenter(function(e) {
jQuery(this).css(opacity, 0.5);
}).mouseout(function(e) {
jQuery(this).css(opacity, 1.0);
});
});
/script
...
Listing 1-2 is a subsequent listing from Chapter 5. You can see that just the script element appears, and I have
highlighted a number of statements. This is how I draw your attention to the part of the example that shows the jQuery
feature I am using. In a partial listing like this, only the element I show has changed from the complete document
shown at the start of the chapter.
Chapter 1 ■ Putting jQuery in Context
6
I have kept the examples in this book very focused on individual features. This is to give you the best coverage of
how jQuery operates. But in doing this, you can lose sight of how different features fit together, so at the end of each
part of the book, there is a short chapter in which I refactor the example document to incorporate all of the topics in
the previous chapters and present a joined-up view of what’s possible.
Where Can I Get the Example Code?
You can download all the examples for all the chapters in this book in the Source Code/Download area of the Apress
web site (www.apress.com). The download is available without charge and includes all of the supporting resources
that are required to re-create the examples without having to type them in (including images, JavaScript libraries, and
CSS style sheets). You don’t have to download the code, but it is the easiest way of experimenting with the examples
and cutting and pasting techniques into your own projects.
Tip
■
■  Even though I list just the changes in a lot of the code listings in the chapters, each example in the source code
download is a complete HTML document that you can load directly into your browser.
What Software Do I Need for This Book?
To follow the examples in this book, you will need various pieces of software, as described in the following sections.
Getting jQuery
The very first thing you need is the jQuery library, which is available from http://jquery.com. There is a download
button right on the front page of the web site and an option to choose either the production or development release,
as shown in Figure 1-1.
Figure 1-1. Downloading the jQuery library
Chapter 1 ■ Putting jQuery in Context
7
You will need to download jQuery 2.x for Parts 1–4 and 6 of this book and jQuery 1.x for Part 5. You’ll be using the
development versions for this book. I explain the difference between these versions and show you how to set up the
jQuery library in Chapter 5.
Tip
■
■  I tell you how to obtain and install the jQuery UI and jQuery Mobile libraries in Chapters 17 and 27, respectively.
Getting an HTML Editor
One of the most important tools for web development is an editor with which you can create HTML documents.
HTML is just text, so you can use a very basic editor, but there are some dedicated packages available that make the
development smoother and simpler, and many of them are available without charge.
When I wrote the first edition of this book, I used Komodo Edit from Active State. It is free; it is simple; it has
good support for HTML, JavaScript, and jQuery; and there are versions for Windows, Mac, and Linux. See
http://activestate.com for details.
Recently, however, I have switched to Microsoft’s Visual Studio. Many of my books are about Microsoft’s web
stack and I write my code on Windows. The recent versions of Visual Studio have outstanding support for HTML
editing and can be used without any dependency of the Microsoft web stack. I used Visual Studio 2012 Express for
this book, which is available for free—see http://www.microsoft.com/visualstudio. (There are paid-for versions as
well—this is Microsoft, after all—but you don’t need the extra features for jQuery development.)
As an alternative, JsFiddle is a popular online editor that provides support for working with jQuery. I don’t get
on with it (it is structured in a way that conflicts with my development habits), but it does seem pretty flexible and
powerful. It is free to use and is available at http://jsfiddle.net.
Note
■
■  I recommend a few products in this book, but only because they are the ones that I use and like. I don’t have any
relationship with Active State, Microsoft, or any other company aside from Apress, which publishes all of my books. I pay full
price for every web service and development tool that I use; I don’t get any special support or secret access to the development
teams and the only money that I receive comes from royalties (and I am very grateful for your purchase—thank you).
Getting a Web Browser
You need a web browser to view your HTML documents and test your jQuery and JavaScript code. I like Google
Chrome: I find it quick, I like the simple UI, and the developer tools are pretty good. Whenever you see a screenshot in
this book (which is often), it will be Google Chrome that you see.
That said, you don’t have to use the same browser I do, but I do recommend you pick one with good developer
tools. Mozilla Firefox has some excellent JavaScript tools available through the Firebug extension, which you can get at
http://getfirebug.com.
If you don’t like Chrome or Firefox, then your next best bet is Internet Explorer. A lot of web programmers have
moral objections to IE, but version 10 is pretty good and I often use it as a quick sanity check when Chrome behaves in
an unexpected manner.
Getting a Web Server
If you want to re-create the examples in this book, you will need a web server so that the browser has somewhere from
which to load the example HTML document and related resources (such as images and JavaScript files). A lot of web
servers are available, and most of them are open source and free of charge. It doesn’t matter which web server you
use. I have used Microsoft’s Internet Information Services (IIS) in this book, but that’s just because I have a Windows
Server machine already set up and ready to go.
Chapter 1 ■ Putting jQuery in Context
8
Getting Node.js
Starting in Part 3, you’ll be using Node.js in addition to a regular web server. Node.js is very popular at the moment,
but I have used it for the simple reason that it is based on JavaScript, so you don’t have to deal with a separate web
application framework. You won’t be digging into any detail at all about Node.js, and I’ll be treating it as a black box
(although I do show you the server scripts so you can see what’s happening on the server if you are interested).
You can download Node.js from http://nodejs.org. There is a precompiled binary for Windows and source
code that you can build for other platforms. In this book, I am using version 0.10.13, which is likely to be superseded
by the time you read this, but the server scripts should still work without any problems.
Setting Up and Testing Node.js
The simplest way to test Node.js is with a simple script. Save the contents of Listing 1-3 to a file called NodeTest.js.
I have done this in the same directory as my Node.js binary.
Listing 1-3. A Node.js Test Script
var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
console.log(Request:  + req.method +  to  + req.url);
res.writeHead(200, OK);
res.write(h1Hello/h1Node.js is working);
res.end();
}).listen(80);
console.log(Ready on port 80);
This is a simple test script that returns a fragment of HTML when it receives an HTTP GET request.
Tip
■
■ Don’t worry if that last sentence didn’t make complete sense. You don’t need to know how HTTP and web
servers work to use jQuery, and I provide a crash course in HTML in Chapter 2.
To test Node.js, run the binary specifying the file you just created as an argument. For my Windows installation,
I typed the following at the console prompt:
node NodeTest.js
To make sure everything is working, navigate to port 80 on the machine that is running Node.js. You should see
something very similar to Figure 1-2, indicating that everything is as expected.
Chapter 1 ■ Putting jQuery in Context
9
I run Node.js on a machine different from the regular web server, which means that using port 80 doesn’t cause
me any problems. If you have only one machine available, run the web server on port 80 and change the Node.js
script to use another port. I have highlighted the part of the test script in Listing 1-3 that specifies which port is used.
Image Attribution
Throughout this book, I use a set of images in the examples. Thanks to the following people for kind permission to use
their photographs: Horia Varlan, David Short, Geishaboy500, Tanaka Juuyoh, Mervi Eskelinen, Fancy Speed Queen,
Alan “craigie3000” Craigie, notsogood, and melalouise.
Summary
In this chapter, I outlined the content and structure of this book and set out the software that is required for jQuery
web development, all of which can be obtained free of charge. The next three chapters refresh your basic skills in
HTML, CSS, and JavaScript. If you are familiar with these topics, then skip to Chapter 5 where I introduce jQuery.
Figure 1-2. Testing Node.js
11
Chapter 2
HTML Primer
We are going to spend a lot of time in this book working on HTML documents. In this chapter, I set out the
information you’ll need to understand what we are doing later in the book. This isn’t an HTML tutorial but rather a
summary of the key characteristics of HTML that I rely on in later chapters.
The latest version of HTML, which is known as HTML5, is a topic in its own right. HTML5 has more than
100 elements, and each of them has its own purpose and functionality. That said, you need only a basic knowledge
of HTML to understand how jQuery works, but if you want to learn about the details of HTML, then I suggest another
of my books: The Definitive Guide to HTML5, also published by Apress.
Introducing a Basic HTML Document
The best place to start is to look at an HTML document. From such a document, you can see the basic structure
and hierarchy that all HTML documents follow. Listing 2-1 shows a simple HTML document. I use this document
throughout this chapter to introduce the core concepts of HTML.
Listing 2-1. A Simple HTML Document
!DOCTYPE html
html
head
titleExample/title
script src=jquery-2.0.2.js type=text/javascript/script
style
h1 {
width: 700px; border: thick double black; margin-left: auto;
margin-right: auto; text-align: center; font-size: x-large; padding: .5em;
color: darkgreen; background-image: url(border.png);
background-size: contain; margin-top: 0;
}
.dtable {display: table;}
.drow {display: table-row;}
.dcell {display: table-cell; padding: 10px;}
.dcell  * {vertical-align: middle}
input {width: 2em; text-align: right; border: thin solid black; padding: 2px;}
label {width: 5em; padding-left: .5em;display: inline-block;}
#buttonDiv {text-align: center;}
#oblock {display: block; margin-left: auto; margin-right: auto; width: 700px;}
/style
/head
Chapter 2 ■ HTML Primer
12
body
h1Jacqui's Flower Shop/h1
form method=post
div id=oblock
div class=dtable
div class=drow
div class=dcell
img src=aster.png/label for=asterAster:/label
input name=aster value=0 required
/div
div class=dcell
img src=daffodil.png/label for=daffodilDaffodil:/label
input name=daffodil value=0 required 
/div
div class=dcell
img src=rose.png/label for=roseRose:/label
input name=rose value=0 required
/div
/div
div class=drow
div class=dcell
img src=peony.png/label for=peonyPeony:/label
input name=peony value=0 required
/div
div class=dcell
img src=primula.png/label for=primulaPrimula:/label
input name=primula value=0 required
/div
div class=dcell
img src=snowdrop.png/label for=snowdropSnowdrop:/label
input name=snowdrop value=0 required
/div
/div
/div
/div
div id=buttonDivbutton type=submitPlace Order/button/div
/form
/body
/html
This is a short and basic HTML document, but it contains some of the most important characteristics associated
with HTML. You can see how this document appears in a browser in Figure 2-1.
Chapter 2 ■ HTML Primer
13
Understanding the Anatomy of an HTML Element
At the heart of HTML is the element, which tells the browser what kind of content each part of an HTML document
represents. Following is an element from the example:
...
h1Jacqui's Flower Shop/h1
...
This element has three parts: the start tag, the end tag, and the content, as illustrated by Figure 2-2.
The name of this element (also referred to as the tag name or just the tag) is h1, and it tells the browser that the
content between the tags should be treated as a top-level header. You create the start tag by placing the tag name in
angle brackets, the  and  characters. You create the end tag in a similar way, except that you also add a / character
after the left-angle bracket ().
Figure 2-1. Displaying the example HTML document in the browser
Figure 2-2. The anatomy of a simple HTML element
Chapter 2 ■ HTML Primer
14
Understanding Attributes
You can provide additional information to the browser by adding attributes to your elements. Listing 2-2 shows an
element with an attribute from the example document.
Listing 2-2. Defining an Attribute
...
label for=asterAster:/label
...
This is a label element, and it defines an attribute called for. I have emphasized the attribute to make it easier to
see. Attributes are always defined as part of the start tag. This attribute has a name and a value. The name is for, and the
value is aster. Not all attributes require a value; just defining them sends a signal to the browser that you want a certain
kind of behavior associated with the element. Listing 2-3 shows an example of an element with such an attribute.
Listing 2-3. Defining an Attribute That Requires No Value
...
input name=snowdrop value=0 required
...
This element has three attributes. The first two, name and value, are assigned a value. (This can get a little
confusing. The names of these attributes are name and value. The value of the name attribute is snowdrop, and the
value of the value attribute is 0.) The third attribute is just the word required. This is an example of an attribute that
doesn’t need a value, although you can define one by setting the attribute value to its name (required=required) or
by using the empty string (required=).
The id and class Attributes
Two attributes are particularly important in this book: the id and class attributes. One of the most common tasks you
need to perform with jQuery is to locate one or more elements in the document so that you can perform some kind of
operation on them. The id and class attributes are useful for locating one or more elements in the HTML document.
Using the id Attribute
You use the id attribute to define a unique identifier for an element in a document. No two elements are allowed to
have the same value for the id attribute. Listing 2-4 shows a simple HTML document that uses the id attribute.
Listing 2-4. Using the id Attribute
!DOCTYPE html
html
head
titleExample/title
/head
body
h1 id=mainheaderWelcome to Jacqui's Flower Shop/h1
h2 id=openinghoursWe are open 10am-6pm, 7 days a week/h2
h3 id=holidays(closed on national holidays)/h3
/body
/html
Chapter 2 ■ HTML Primer
15
I have defined the id attribute on three of the elements in the document. The h1 element has an id value of
mainheader, the h2 element has an id value of openinghours, and the h3 element has an id value of holidays.
Using the id value lets you find a specific element in the document.
Using the class Attribute
The class attribute arbitrarily associates elements together. Many elements can be assigned to the same class, and
elements can belong to more than one class, as shown in Listing 2-5.
Listing 2-5. Using the class Attribute
!DOCTYPE html
html
head
titleExample/title
/head
body
h1 id=mainheader class=headerWelcome to Jacqui's Flower Shop/h1
h2 class=header infoWe are open 10am-6pm, 7 days a week/h2
h3 class=info(closed on national holidays)/h3
/body
/html
In Listing 2-5, the h1 element belongs to the header class, the h2 element belongs to the header and info classes,
and the h3 element belongs just to the info class. As you can see, you can add an element to multiple classes just by
separating the class names with spaces.
Understanding Element Content
Elements can contain text, but they can also contain other elements. Following is an example of an element that
contains other elements:
...
div class=dcell
img src=rose.png/
label for=roseRose:/label
input name=rose value=0 required
/div
...
The div element contains three others: an img, a label, and an input element. You can define multiple levels
of nested elements, not just the one level shown here. Nesting elements like this is a key concept in HTML because it
imparts the significance of the outer element to those contained within (this is a theme I return to later). You can mix
text content and other elements, as follows:
...
div class=dcell
Here is some text content
img src=rose.png/
Here is some more text!
input name=rose value=0 required
/div
...
Chapter 2 ■ HTML Primer
16
Understanding Void Elements
The HTML specification includes elements that may not contain content. These are called void or self-closing
elements and they are written without a separate end tag. Following is an example of a void element:
...
img src=rose.png/
...
A void element is defined in a single tag, and you add a / character before the last angle bracket (the  character).
Strictly speaking, there should be a space between the last character of the last attribute and the / character, as follows:
...
img src=rose.png /
...
However, browsers are tolerant when interpreting HTML and you can omit the space character. Void elements
are often used when the element refers to an external resource. In this case, the img element is used to link to an
external image file called rose.png.
Understanding the Document Structure
There are some key elements that define the basic structure of any HTML document: the DOCTYPE, html, head, and
body elements. Listing 2-6 shows the relationship between these elements with the rest of the content removed.
Listing 2-6. The Basic Structure of an HTML Document
!DOCTYPE html
html
head
...head content...
/head
body
...body content...
/body
/html
Each of these elements has a specific role to play in an HTML document. The DOCTYPE element tells the browser
that this is an HTML document and, more specifically, that this is an HTML5 document. Earlier versions of HTML
required additional information. For example, following is the DOCTYPE element for an HTML4 document:
...
!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN
http://www.w3.org/TR/html4/strict.dtd
...
The html element denotes the region of the document that contains the HTML content. This element always
contains the other two key structural elements: head and body. As I said at the start of this chapter, I am not going to
cover the individual HTML elements. There are too many of them, and describing HTML5 completely took me more
than 1,000 pages in my HTML5 book. That said, I will provide brief descriptions of the elements I use so that you have a
good idea of what a document does. Table 2-1 summarizes the elements used in the example document from Listing 2-1,
some of which I describe in a little more detail later in this chapter.
Chapter 2 ■ HTML Primer
17
Understanding the Metadata Elements
The head element contains the metadata for the document—in other words, one or more elements that describe or
operate on the content of the document but that are not directly displayed by the browser. The example document
contains three metadata elements in the head section: title, script, and style. The title element is the most basic
and the contents of this element are used by browser to set the title of the window or tab, and all HTML documents
are required to have a title element. The other two elements are more important for this book, as I explain in the
sections that follow.
Understanding the script Element
The script element lets you include JavaScript in your code. This is an element that you will see often once I start
covering jQuery in depth. The example document contains one script element, which is shown in Listing 2-7.
Listing 2-7. The script Element from the Example Document
...
script src=jquery-2.0.2.js type=text/javascript/script
...
When you define the src attribute for the script element, you are telling the browser that you want to load the
JavaScript contained in another file. In this case, this is the main jQuery library, which the browser will find in the file
jquery-2.0.2.js. A single HTML document can contain more than one script element, and you can include the
JavaScript code between the start and end tags if you prefer, as shown in Listing 2-8.
Table 2-1. HTML Elements Used in the Example Document
Element Description
DOCTYPE Indicates the type of content in the document
body Denotes the region of the document that contains content elements (described in the section
“Understanding the Content Elements”)
button Denotes a button; often used to submit a form to the server
div A generic element; often used to add structure to a document for presentation purposes
form Denotes an HTML form, which allows you to gather data from the user and send them to a server for
processing
h1 Denotes a header
head Denotes the region of the document that contains metadata (described in the section “Understanding
the Metadata Elements”)
html Denotes the region of the document that contains HTML (which is usually the entire document)
img Denotes an image
input Denotes an input field used to gather a single data item from the user, usually as part of an HTML form
script Denotes a script, typically JavaScript, that will be executed as part of the document
style Denotes a region of CSS settings; see Chapter 3
title Denotes the title of the document; used by the browser to set the title of the window or tab used to
display the document’s content
Other documents randomly have
different content
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Pro jQuery 2 0 Second Edition Adam Freeman
back
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
ebookultra.com

More Related Content

PDF
Implementing auto complete using JQuery
PDF
Fewd week4 slides
PDF
Learn With Angular 4 Bootstrap And Nodejs 2nd Edition Jeffry Houser
PPT
Jquery
PDF
jQuery Fundamentals - JavaScript Library.pdf
PDF
Wireless Wednesdays: Part 4
PPT
jQuery and_drupal
PPTX
Creating Openbravo Workspace Widgets
Implementing auto complete using JQuery
Fewd week4 slides
Learn With Angular 4 Bootstrap And Nodejs 2nd Edition Jeffry Houser
Jquery
jQuery Fundamentals - JavaScript Library.pdf
Wireless Wednesdays: Part 4
jQuery and_drupal
Creating Openbravo Workspace Widgets

Similar to Pro jQuery 2 0 Second Edition Adam Freeman (20)

PPTX
Starting with jQuery
PPTX
Valentine with Angular js - Introduction
PPTX
jQuery Conference Austin Sept 2013
PDF
jQuery Interview Questions By ScholarHat.pdf
PPTX
Web components Introduction
PPTX
jQuery - the world's most popular java script library comes to XPages
PDF
jQuery: The World's Most Popular JavaScript Library Comes to XPages
PDF
Knockout in action
PDF
Download full ebook of Become a ninja with Angular Ninja Squad instant downlo...
DOCX
Codeigniter
PPTX
Web worker in your angular application
PDF
Introduction to Angular Js
PDF
JavascriptMVC: Another choice of web framework
PDF
Introduction to Django Course For Newbie - Advance
PDF
JEE Conf 2015: Less JS!
DOCX
A report on mvc using the information
PDF
0506-django-web-framework-for-python.pdf
ODP
Projects In JavaScript And JQuery | Eduonix
PDF
Full Stack Java Development With Spring Mvc Hibernate Jquery And Bootstrap Ma...
PDF
The State of Front-end At CrowdTwist
Starting with jQuery
Valentine with Angular js - Introduction
jQuery Conference Austin Sept 2013
jQuery Interview Questions By ScholarHat.pdf
Web components Introduction
jQuery - the world's most popular java script library comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
Knockout in action
Download full ebook of Become a ninja with Angular Ninja Squad instant downlo...
Codeigniter
Web worker in your angular application
Introduction to Angular Js
JavascriptMVC: Another choice of web framework
Introduction to Django Course For Newbie - Advance
JEE Conf 2015: Less JS!
A report on mvc using the information
0506-django-web-framework-for-python.pdf
Projects In JavaScript And JQuery | Eduonix
Full Stack Java Development With Spring Mvc Hibernate Jquery And Bootstrap Ma...
The State of Front-end At CrowdTwist
Ad

Recently uploaded (20)

PDF
Pre independence Education in Inndia.pdf
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PPTX
Institutional Correction lecture only . . .
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Cell Structure & Organelles in detailed.
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
RMMM.pdf make it easy to upload and study
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Classroom Observation Tools for Teachers
PPTX
Pharma ospi slides which help in ospi learning
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
Basic Mud Logging Guide for educational purpose
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
GDM (1) (1).pptx small presentation for students
Pre independence Education in Inndia.pdf
O7-L3 Supply Chain Operations - ICLT Program
O5-L3 Freight Transport Ops (International) V1.pdf
Institutional Correction lecture only . . .
Insiders guide to clinical Medicine.pdf
Cell Structure & Organelles in detailed.
Microbial disease of the cardiovascular and lymphatic systems
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
human mycosis Human fungal infections are called human mycosis..pptx
RMMM.pdf make it easy to upload and study
Microbial diseases, their pathogenesis and prophylaxis
TR - Agricultural Crops Production NC III.pdf
Classroom Observation Tools for Teachers
Pharma ospi slides which help in ospi learning
Final Presentation General Medicine 03-08-2024.pptx
Supply Chain Operations Speaking Notes -ICLT Program
PPH.pptx obstetrics and gynecology in nursing
Basic Mud Logging Guide for educational purpose
Abdominal Access Techniques with Prof. Dr. R K Mishra
GDM (1) (1).pptx small presentation for students
Ad

Pro jQuery 2 0 Second Edition Adam Freeman

  • 1. Visit https://ebookultra.com to download the full version and explore more ebooks or textbooks Pro jQuery 2 0 Second Edition Adam Freeman _____ Click the link below to download _____ https://ebookultra.com/download/pro-jquery-2-0-second- edition-adam-freeman/ Explore and download more ebooks or textbooks at ebookultra.com
  • 2. Here are some recommended products that we believe you will be interested in. You can click the link to download. Pro ASP NET 4 5 in C Fifth Edition Adam Freeman https://ebookultra.com/download/pro-asp-net-4-5-in-c-fifth-edition- adam-freeman/ Microsoft Reference Architecture for Commerce Version 2 0 Pro Other 1st Edition Microsoft Corporation https://ebookultra.com/download/microsoft-reference-architecture-for- commerce-version-2-0-pro-other-1st-edition-microsoft-corporation/ Pro ASP NET MVC 2 Framework Second Edition Steven Sanderson https://ebookultra.com/download/pro-asp-net-mvc-2-framework-second- edition-steven-sanderson/ Pro Netbeans IDE 6 Rich Client Platform Edition Adam Myatt https://ebookultra.com/download/pro-netbeans-ide-6-rich-client- platform-edition-adam-myatt/
  • 3. Learning jQuery 3 Build interesting interactive sites using jQuery by automating common tasks and simplifying the complicated ones 5th Edition Adam Boduch https://ebookultra.com/download/learning-jquery-3-build-interesting- interactive-sites-using-jquery-by-automating-common-tasks-and- simplifying-the-complicated-ones-5th-edition-adam-boduch/ ActionScript 2 0 Garage Tara Calishain https://ebookultra.com/download/actionscript-2-0-garage-tara- calishain/ Creating Mobile Apps with jQuery Mobile Second Edition Matthews https://ebookultra.com/download/creating-mobile-apps-with-jquery- mobile-second-edition-matthews/ Multi Platinum Pro Tools Advanced Editing Pocketing and Autotuning Techniques Nathan Adam https://ebookultra.com/download/multi-platinum-pro-tools-advanced- editing-pocketing-and-autotuning-techniques-nathan-adam/ Beginning ASP NET 2 0 Chris Hart https://ebookultra.com/download/beginning-asp-net-2-0-chris-hart/
  • 5. Pro jQuery 2 0 Second Edition Adam Freeman Digital Instant Download Author(s): AdamFreeman ISBN(s): 9781430263883, 1430263881 Edition: 2 File Details: PDF, 38.21 MB Year: 2013 Language: english
  • 7. For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them.
  • 8. v Contents at a Glance About the Author������������������������������������������������������������������������������������������������������������� xxix About the Technical Reviewer����������������������������������������������������������������������������������������� xxxi Acknowledgments��������������������������������������������������������������������������������������������������������� xxxiii Chapter 1: Putting jQuery in Context ■ ■ ���������������������������������������������������������������������������������1 Chapter 2: HTML Primer ■ ■ ��������������������������������������������������������������������������������������������������11 Chapter 3: CSS Primer ■ ■ �����������������������������������������������������������������������������������������������������33 Chapter 4: JavaScript Primer ■ ■ ������������������������������������������������������������������������������������������61 Chapter 5: jQuery Basics ■ ■ �������������������������������������������������������������������������������������������������93 Chapter 6: Managing the Element Selection ■ ■ �����������������������������������������������������������������117 Chapter 7: Manipulating the DOM ■ ■ ���������������������������������������������������������������������������������145 Chapter 8: Manipulating Elements ■ ■ ��������������������������������������������������������������������������������177 Chapter 9: Working with Events ■ ■ ������������������������������������������������������������������������������������211 Chapter 10: Using jQuery Effects ■ ■ �����������������������������������������������������������������������������������235 Chapter 11: Refactoring the Example: Part I ■ ■ �����������������������������������������������������������������267 Chapter 12: Using Data Templates ■ ■ ���������������������������������������������������������������������������������281 Chapter 13: Working with Forms ■ ■ �����������������������������������������������������������������������������������309 Chapter 14: Using Ajax: Part I ■ ■ ���������������������������������������������������������������������������������������351 Chapter 15: Using Ajax: Part II ■ ■ ��������������������������������������������������������������������������������������381 Chapter 16: Refactoring the Example: Part II ■ ■ ����������������������������������������������������������������411
  • 9. ■ Contents at a Glance vi Chapter 17: Setting Up jQuery UI ■ ■ �����������������������������������������������������������������������������������449 Chapter 18: Using the Button, Progress Bar, and Slider Widgets ■ ■ ����������������������������������457 Chapter 19: Using the Autocomplete and Accordion Widgets ■ ■ ���������������������������������������491 Chapter 20: Using the Tabs Widget ■ ■ ��������������������������������������������������������������������������������527 Chapter 21: Using the Datepicker Widget ■ ■ ����������������������������������������������������������������������555 Chapter 22: Using the Dialog and Spinner Widgets ■ ■ �������������������������������������������������������587 Chapter 23: Using the Menu and Tooltip Widgets ■ ■ ����������������������������������������������������������621 Chapter 24: Using the Drag-and-Drop Interactions ■ ■ �������������������������������������������������������653 Chapter 25: Using the Other Interactions ■ ■ ����������������������������������������������������������������������683 Chapter 26: Refactoring the Example: Part III ■ ■ ���������������������������������������������������������������709 Chapter 27: Getting Started with jQuery Mobile ■ ■ ������������������������������������������������������������737 Chapter 28: Pages, Themes Layouts ■ ■ ��������������������������������������������������������������������������763 Chapter 29: The Dialog Popup Widgets ■ ■ ����������������������������������������������������������������������797 Chapter 30: Buttons and Collapsible Blocks ■ ■ �����������������������������������������������������������������823 Chapter 31: Using jQuery Mobile Forms ■ ■ ������������������������������������������������������������������������847 Chapter 32: Using Lists and Panels ■ ■ �������������������������������������������������������������������������������879 Chapter 33: Refactoring the Example: Part IV ■ ■ ���������������������������������������������������������������903 Chapter 34: Using the jQuery Utility Methods ■ ■ ���������������������������������������������������������������929 Chapter 35: The jQuery UI Effects CSS Framework ■ ■ ����������������������������������������������������945 Chapter 36: Using Deferred Objects ■ ■ ������������������������������������������������������������������������������963 Index���������������������������������������������������������������������������������������������������������������������������������995
  • 10. 1 Chapter 1 Putting jQuery in Context At its heart, jQuery does something that sounds dull: it lets you modify the contents of web pages by manipulating the model that the browser creates when it processes the HTML, a process known as DOM (Document Object Model) manipulation, which I describe in detail later. If you have picked up this book, then you have probably already done some DOM manipulation, using either another JavaScript library or the built-in web browser API (application programming interface), and now you want to do it in a better way. jQuery goes beyond better. It makes DOM manipulation a pleasure and, on occasion, an actual joy. There is something elegant and graceful about the way that jQuery works that transforms a task that can be pure drudgery into something that is simple and easy. Once you start using jQuery, there is no going back. Here are the top reasons that I use jQuery in my projects. • jQuery is expressive. I can do more work with much code. • jQuery methods apply to multiple elements. The DOM API approach of select-iterate-modify is gone, meaning fewer for loops to iterate through elements and fewer mistakes. • jQuery deals with implementation differences between browsers. I don’t have to worry about whether Internet Explorer (IE) supports a feature in an odd way, for example; I just tell jQuery what I want, and it works around the implementation differences for me. • jQuery is open source. When I don’t understand how something works or I don’t quite get the result I expect, I can read through the JavaScript code and, if needed, make changes. The genius of jQuery is that it takes something that is a major grind in web development and makes it simple, quicker, and easier. I can’t ask for more than that. Not everything is perfect, of course, and there are one or two rough edges, which I’ll explain as I get into the details. But even with the occasional flaw, I love working with jQuery, and I hope you will find it equally compelling and enjoyable to use. Understanding jQuery UI and jQuery Mobile In addition to the core jQuery library, I also cover jQuery UI and jQuery Mobile, which are user interface (UI) libraries built on top of jQuery. jQuery UI is a general-purpose UI toolkit intended to be used on any device, and jQuery Mobile is designed for use with touch-enabled devices such as smartphones and tablets. Understanding jQuery Plug-ins jQuery plug-ins extend the functionality of the basic library. Some plug-ins are so good and so widely used that I have covered them in this book. There are a lot of plug-ins available (although the quality can vary), so if you don’t like the plug-ins I describe in this book, you can be confident that an alternative approach is available.
  • 11. Chapter 1 ■ Putting jQuery in Context 2 What Do I Need to Know? Before reading this book, you should be familiar with the basics of web development, have an understanding of how HTML and CSS (cascading style sheets) work, and, ideally, have a working knowledge of JavaScript. If you are a little hazy on some of these details, I provide refreshers for HTML, CSS, and JavaScript in Chapters 2, 3, and 4. You won’t find a comprehensive reference for HTML elements and CSS properties, though. There just isn’t the space in a book about jQuery to cover HTML in its entirety. If you want a complete reference for HTML and CSS, then I suggest another of my books: The Definitive Guide to HTML5, also published by Apress. What Is the Structure of This Book? This book is split into six parts, each of which covers a set of related topics. Part 1: Getting Ready Part 1 of this book provides the information you need to get ready for the rest of the book. It includes this chapter and primers/refreshers for HTML, CSS, and JavaScript. Later in this chapter, I’ll describe the software that you will need in order to follow along. Part 2: Working with jQuery Part 2 of this book introduces you to the jQuery library, starting with a basic example and building up to include each of the core features: element selection, DOM manipulation, events, and effects. Part 3: Working with Data and Ajax Part 3 of this book shows how jQuery makes it possible to work with inline or remote data. I show you how you can generate HTML content from data, how you can validate data entered into web forms, and how you can use jQuery to perform asynchronous operations, including Ajax. Part 4: Using jQuery UI jQuery UI is one of the two user interface libraries that I describe in this book. Built on, and integrated with, the core jQuery library, jQuery UI allows you to create rich and responsive interfaces for your web applications. Part 5: Using jQuery Mobile jQuery Mobile is the other user interface library that I cover in this book. jQuery Mobile is built on top of jQuery and incorporates some basic feature from jQuery UI but has been optimized for creating smartphone and tablet interfaces. Fewer UI widgets are available in jQuery Mobile, but those that are supported are optimized for touch interaction and for presentation on smaller displays. Part 6: Advanced Features The final part of this book describes some jQuery and jQuery UI features not commonly used but which can be helpful in complex projects. These are advanced features that require a better understanding of HTML, CSS, and jQuery itself. When reading Chapter 36, a basic knowledge of asynchronous programming is very helpful.
  • 12. Chapter 1 ■ Putting jQuery in Context 3 What’s New in This Edition? Since the first edition of this book, jQuery, jQuery UI, and jQuery Mobile have all undergone substantial changes. What’s New for Core jQuery? The API for the core jQuery library is remarkably stable. Some years ago, the jQuery team starting listing changes that they intended to make, and these were implemented with the release of jQuery version 1.9. Some of these changes are quite substantial and I have indicated the changes in each chapter throughout Part 2 of this book. The good news is that these changes are very rare and the API is likely to remain stable for several years. That’s not to say that new features won’t be added, but the code that you develop today will continue to work without modification for some time to come. The bad news is that the jQuery team did something unusual when they released jQuery 1.9—they also released jQuery 2.0, and thus they split development into two lines of parallel releases: jQuery 1.x and jQuery 2.x. Both release lines have the same API but jQuery 2.x doesn’t support versions 6, 7, and 8 of IE. The older versions of IE are notorious in their non-standard approach to HTML, CSS, and JavaScript, and removing all of the checks for odd behavior and the associated workarounds makes jQuery 2.x smaller and faster. Tip ■ ■  At the time of this writing, the current versions of jQuery are 2.0.2 and 1.10.1. It is important to understand that jQuery 2.0.2 doesn’t supersede version 1.10.1. They are both the latest release and the only difference is that jQuery 1.10.1 preserves support for older versions of Internet Explorer. You should use jQuery 2.x if you are sure that none of your users will have Internet Explorer 6, 7, or 8. If that is not the case—or if you are not sure—then you should use jQuery 1.x. These versions of IE are still widely used, especially in large corporations, and you should think carefully about the effect of using the 2.x line. There are no legacy users in the idealized world of programming books, and I’ll be using the jQuery 2.0.2 library throughout most this book—but you can substitute any version of the jQuery 1.x line (from version 1.9 onward) and get the same result and preserve support for the old versions of IE. Tip ■ ■  I use jQuery 1.x in Part 4, when I describe jQuery Mobile. jQuery Mobile tends to lag behind the main jQuery release and, as I write this, only supports jQuery 1.x. What’s New for jQuery UI? jQuery UI has also been updated. The API for using the existing user interface widgets has been updated to be more consistent and to work more closely with the HTML elements that underpin them and some new widgets have been added. Throughout Part 3 of this book, you will find that I show the important changes at the start of each chapter, just as I did for the changes to jQuery itself in Part 2. What’s New for jQuery Mobile? jQuery Mobile has matured a lot since the previous edition of this book. The API has been normalized, new widgets have been added, and the overall developer experience is much more consistent with jQuery and jQuery UI. To reflect this maturity, I have completely rewritten Part 4 to bring it in line with the rest of the book. There are more examples, reference tables, and demonstrations of specific features.
  • 13. Chapter 1 ■ Putting jQuery in Context 4 What Else Is New? From Chapter 12 onward, I use templates to generate HTML elements from data. This is an important technique and I use it liberally. The library that I used in the previous edition has reached the end of its life and I have chosen a replacement. The new library doesn’t come with direct integration into jQuery and so in Chapter 12, I provide a custom plug-in that makes using the template library I selected easy to use with jQuery. All of the examples that follow Chapter 12 have been revised to use the new library. I changed the toolset that I use for testing mobile applications, preferring to use a cloud-based testing service rather than maintaining my own emulators. I explain why I have done this in Chapter 27. Are There Lots of Examples? There are loads of examples. One of the nice aspects of jQuery is that almost any task can be performed in several different ways, allowing you to develop a personal jQuery style. To show the different approaches you can take, I have included a lot of different examples—so many, in fact, that I include the complete HTML document you are working with only once in some chapters in order to fit everything in. The first example in every chapter is a complete HTML document, as shown in Listing 1-1, for example. Listing 1-1. A Complete Example Document !DOCTYPE html html head titleExample/title link rel=stylesheet type=text/css href=styles.css/ script src=jquery-2.0.2.js type=text/javascript/script script type=text/javascript $(document).ready(function () { $(img:odd).mouseenter(function (e) { $(this).css(opacity, 0.5); }).mouseout(function (e) { $(this).css(opacity, 1.0); }); }); /script /head body h1Jacqui's Flower Shop/h1 form method=post div id=oblock div class=dtable div id=row1 class=drow div class=dcell img src=aster.png/label for=asterAster:/label input name=aster value=0 required /div div class=dcell img src=daffodil.png/label for=daffodilDaffodil:/label input name=daffodil value=0 required /div div class=dcell
  • 14. Chapter 1 ■ Putting jQuery in Context 5 img src=rose.png/label for=roseRose:/label input name=rose value=0 required /div /div div id=row2 class=drow div class=dcell img src=peony.png/label for=peonyPeony:/label input name=peony value=0 required /div div class=dcell img src=primula.png/label for=primulaPrimula:/label input name=primula value=0 required /div div class=dcell img src=snowdrop.png/label for=snowdropSnowdrop:/label input name=snowdrop value=0 required /div /div /div /div div id=buttonDivbutton type=submitPlace Order/button/div /form /body /html This listing is taken from Chapter 5. Don’t worry about what it does; just be aware that the first example in each chapter is a complete HTML document, similar to the one shown in Listing 1-1. Almost all of the examples are based around the same basic HTML document, which displays a simple flower shop. It isn’t the most exciting example, but it is self-contained and includes all of the things we are interested in when working with jQuery. For the second and subsequent examples, I only show you the elements that change. This is generally just the script element, which is where your jQuery code lives. You can spot a partial listing because it starts and ends with ellipsis (...), as shown in Listing 1-2. Listing 1-2. A Partial Listing ... script type=text/javascript jQuery(document).ready(function () { jQuery(img:odd).mouseenter(function(e) { jQuery(this).css(opacity, 0.5); }).mouseout(function(e) { jQuery(this).css(opacity, 1.0); }); }); /script ... Listing 1-2 is a subsequent listing from Chapter 5. You can see that just the script element appears, and I have highlighted a number of statements. This is how I draw your attention to the part of the example that shows the jQuery feature I am using. In a partial listing like this, only the element I show has changed from the complete document shown at the start of the chapter.
  • 15. Chapter 1 ■ Putting jQuery in Context 6 I have kept the examples in this book very focused on individual features. This is to give you the best coverage of how jQuery operates. But in doing this, you can lose sight of how different features fit together, so at the end of each part of the book, there is a short chapter in which I refactor the example document to incorporate all of the topics in the previous chapters and present a joined-up view of what’s possible. Where Can I Get the Example Code? You can download all the examples for all the chapters in this book in the Source Code/Download area of the Apress web site (www.apress.com). The download is available without charge and includes all of the supporting resources that are required to re-create the examples without having to type them in (including images, JavaScript libraries, and CSS style sheets). You don’t have to download the code, but it is the easiest way of experimenting with the examples and cutting and pasting techniques into your own projects. Tip ■ ■  Even though I list just the changes in a lot of the code listings in the chapters, each example in the source code download is a complete HTML document that you can load directly into your browser. What Software Do I Need for This Book? To follow the examples in this book, you will need various pieces of software, as described in the following sections. Getting jQuery The very first thing you need is the jQuery library, which is available from http://jquery.com. There is a download button right on the front page of the web site and an option to choose either the production or development release, as shown in Figure 1-1. Figure 1-1. Downloading the jQuery library
  • 16. Chapter 1 ■ Putting jQuery in Context 7 You will need to download jQuery 2.x for Parts 1–4 and 6 of this book and jQuery 1.x for Part 5. You’ll be using the development versions for this book. I explain the difference between these versions and show you how to set up the jQuery library in Chapter 5. Tip ■ ■  I tell you how to obtain and install the jQuery UI and jQuery Mobile libraries in Chapters 17 and 27, respectively. Getting an HTML Editor One of the most important tools for web development is an editor with which you can create HTML documents. HTML is just text, so you can use a very basic editor, but there are some dedicated packages available that make the development smoother and simpler, and many of them are available without charge. When I wrote the first edition of this book, I used Komodo Edit from Active State. It is free; it is simple; it has good support for HTML, JavaScript, and jQuery; and there are versions for Windows, Mac, and Linux. See http://activestate.com for details. Recently, however, I have switched to Microsoft’s Visual Studio. Many of my books are about Microsoft’s web stack and I write my code on Windows. The recent versions of Visual Studio have outstanding support for HTML editing and can be used without any dependency of the Microsoft web stack. I used Visual Studio 2012 Express for this book, which is available for free—see http://www.microsoft.com/visualstudio. (There are paid-for versions as well—this is Microsoft, after all—but you don’t need the extra features for jQuery development.) As an alternative, JsFiddle is a popular online editor that provides support for working with jQuery. I don’t get on with it (it is structured in a way that conflicts with my development habits), but it does seem pretty flexible and powerful. It is free to use and is available at http://jsfiddle.net. Note ■ ■  I recommend a few products in this book, but only because they are the ones that I use and like. I don’t have any relationship with Active State, Microsoft, or any other company aside from Apress, which publishes all of my books. I pay full price for every web service and development tool that I use; I don’t get any special support or secret access to the development teams and the only money that I receive comes from royalties (and I am very grateful for your purchase—thank you). Getting a Web Browser You need a web browser to view your HTML documents and test your jQuery and JavaScript code. I like Google Chrome: I find it quick, I like the simple UI, and the developer tools are pretty good. Whenever you see a screenshot in this book (which is often), it will be Google Chrome that you see. That said, you don’t have to use the same browser I do, but I do recommend you pick one with good developer tools. Mozilla Firefox has some excellent JavaScript tools available through the Firebug extension, which you can get at http://getfirebug.com. If you don’t like Chrome or Firefox, then your next best bet is Internet Explorer. A lot of web programmers have moral objections to IE, but version 10 is pretty good and I often use it as a quick sanity check when Chrome behaves in an unexpected manner. Getting a Web Server If you want to re-create the examples in this book, you will need a web server so that the browser has somewhere from which to load the example HTML document and related resources (such as images and JavaScript files). A lot of web servers are available, and most of them are open source and free of charge. It doesn’t matter which web server you use. I have used Microsoft’s Internet Information Services (IIS) in this book, but that’s just because I have a Windows Server machine already set up and ready to go.
  • 17. Chapter 1 ■ Putting jQuery in Context 8 Getting Node.js Starting in Part 3, you’ll be using Node.js in addition to a regular web server. Node.js is very popular at the moment, but I have used it for the simple reason that it is based on JavaScript, so you don’t have to deal with a separate web application framework. You won’t be digging into any detail at all about Node.js, and I’ll be treating it as a black box (although I do show you the server scripts so you can see what’s happening on the server if you are interested). You can download Node.js from http://nodejs.org. There is a precompiled binary for Windows and source code that you can build for other platforms. In this book, I am using version 0.10.13, which is likely to be superseded by the time you read this, but the server scripts should still work without any problems. Setting Up and Testing Node.js The simplest way to test Node.js is with a simple script. Save the contents of Listing 1-3 to a file called NodeTest.js. I have done this in the same directory as my Node.js binary. Listing 1-3. A Node.js Test Script var http = require('http'); var url = require('url'); http.createServer(function (req, res) { console.log(Request: + req.method + to + req.url); res.writeHead(200, OK); res.write(h1Hello/h1Node.js is working); res.end(); }).listen(80); console.log(Ready on port 80); This is a simple test script that returns a fragment of HTML when it receives an HTTP GET request. Tip ■ ■ Don’t worry if that last sentence didn’t make complete sense. You don’t need to know how HTTP and web servers work to use jQuery, and I provide a crash course in HTML in Chapter 2. To test Node.js, run the binary specifying the file you just created as an argument. For my Windows installation, I typed the following at the console prompt: node NodeTest.js To make sure everything is working, navigate to port 80 on the machine that is running Node.js. You should see something very similar to Figure 1-2, indicating that everything is as expected.
  • 18. Chapter 1 ■ Putting jQuery in Context 9 I run Node.js on a machine different from the regular web server, which means that using port 80 doesn’t cause me any problems. If you have only one machine available, run the web server on port 80 and change the Node.js script to use another port. I have highlighted the part of the test script in Listing 1-3 that specifies which port is used. Image Attribution Throughout this book, I use a set of images in the examples. Thanks to the following people for kind permission to use their photographs: Horia Varlan, David Short, Geishaboy500, Tanaka Juuyoh, Mervi Eskelinen, Fancy Speed Queen, Alan “craigie3000” Craigie, notsogood, and melalouise. Summary In this chapter, I outlined the content and structure of this book and set out the software that is required for jQuery web development, all of which can be obtained free of charge. The next three chapters refresh your basic skills in HTML, CSS, and JavaScript. If you are familiar with these topics, then skip to Chapter 5 where I introduce jQuery. Figure 1-2. Testing Node.js
  • 19. 11 Chapter 2 HTML Primer We are going to spend a lot of time in this book working on HTML documents. In this chapter, I set out the information you’ll need to understand what we are doing later in the book. This isn’t an HTML tutorial but rather a summary of the key characteristics of HTML that I rely on in later chapters. The latest version of HTML, which is known as HTML5, is a topic in its own right. HTML5 has more than 100 elements, and each of them has its own purpose and functionality. That said, you need only a basic knowledge of HTML to understand how jQuery works, but if you want to learn about the details of HTML, then I suggest another of my books: The Definitive Guide to HTML5, also published by Apress. Introducing a Basic HTML Document The best place to start is to look at an HTML document. From such a document, you can see the basic structure and hierarchy that all HTML documents follow. Listing 2-1 shows a simple HTML document. I use this document throughout this chapter to introduce the core concepts of HTML. Listing 2-1. A Simple HTML Document !DOCTYPE html html head titleExample/title script src=jquery-2.0.2.js type=text/javascript/script style h1 { width: 700px; border: thick double black; margin-left: auto; margin-right: auto; text-align: center; font-size: x-large; padding: .5em; color: darkgreen; background-image: url(border.png); background-size: contain; margin-top: 0; } .dtable {display: table;} .drow {display: table-row;} .dcell {display: table-cell; padding: 10px;} .dcell * {vertical-align: middle} input {width: 2em; text-align: right; border: thin solid black; padding: 2px;} label {width: 5em; padding-left: .5em;display: inline-block;} #buttonDiv {text-align: center;} #oblock {display: block; margin-left: auto; margin-right: auto; width: 700px;} /style /head
  • 20. Chapter 2 ■ HTML Primer 12 body h1Jacqui's Flower Shop/h1 form method=post div id=oblock div class=dtable div class=drow div class=dcell img src=aster.png/label for=asterAster:/label input name=aster value=0 required /div div class=dcell img src=daffodil.png/label for=daffodilDaffodil:/label input name=daffodil value=0 required /div div class=dcell img src=rose.png/label for=roseRose:/label input name=rose value=0 required /div /div div class=drow div class=dcell img src=peony.png/label for=peonyPeony:/label input name=peony value=0 required /div div class=dcell img src=primula.png/label for=primulaPrimula:/label input name=primula value=0 required /div div class=dcell img src=snowdrop.png/label for=snowdropSnowdrop:/label input name=snowdrop value=0 required /div /div /div /div div id=buttonDivbutton type=submitPlace Order/button/div /form /body /html This is a short and basic HTML document, but it contains some of the most important characteristics associated with HTML. You can see how this document appears in a browser in Figure 2-1.
  • 21. Chapter 2 ■ HTML Primer 13 Understanding the Anatomy of an HTML Element At the heart of HTML is the element, which tells the browser what kind of content each part of an HTML document represents. Following is an element from the example: ... h1Jacqui's Flower Shop/h1 ... This element has three parts: the start tag, the end tag, and the content, as illustrated by Figure 2-2. The name of this element (also referred to as the tag name or just the tag) is h1, and it tells the browser that the content between the tags should be treated as a top-level header. You create the start tag by placing the tag name in angle brackets, the and characters. You create the end tag in a similar way, except that you also add a / character after the left-angle bracket (). Figure 2-1. Displaying the example HTML document in the browser Figure 2-2. The anatomy of a simple HTML element
  • 22. Chapter 2 ■ HTML Primer 14 Understanding Attributes You can provide additional information to the browser by adding attributes to your elements. Listing 2-2 shows an element with an attribute from the example document. Listing 2-2. Defining an Attribute ... label for=asterAster:/label ... This is a label element, and it defines an attribute called for. I have emphasized the attribute to make it easier to see. Attributes are always defined as part of the start tag. This attribute has a name and a value. The name is for, and the value is aster. Not all attributes require a value; just defining them sends a signal to the browser that you want a certain kind of behavior associated with the element. Listing 2-3 shows an example of an element with such an attribute. Listing 2-3. Defining an Attribute That Requires No Value ... input name=snowdrop value=0 required ... This element has three attributes. The first two, name and value, are assigned a value. (This can get a little confusing. The names of these attributes are name and value. The value of the name attribute is snowdrop, and the value of the value attribute is 0.) The third attribute is just the word required. This is an example of an attribute that doesn’t need a value, although you can define one by setting the attribute value to its name (required=required) or by using the empty string (required=). The id and class Attributes Two attributes are particularly important in this book: the id and class attributes. One of the most common tasks you need to perform with jQuery is to locate one or more elements in the document so that you can perform some kind of operation on them. The id and class attributes are useful for locating one or more elements in the HTML document. Using the id Attribute You use the id attribute to define a unique identifier for an element in a document. No two elements are allowed to have the same value for the id attribute. Listing 2-4 shows a simple HTML document that uses the id attribute. Listing 2-4. Using the id Attribute !DOCTYPE html html head titleExample/title /head body h1 id=mainheaderWelcome to Jacqui's Flower Shop/h1 h2 id=openinghoursWe are open 10am-6pm, 7 days a week/h2 h3 id=holidays(closed on national holidays)/h3 /body /html
  • 23. Chapter 2 ■ HTML Primer 15 I have defined the id attribute on three of the elements in the document. The h1 element has an id value of mainheader, the h2 element has an id value of openinghours, and the h3 element has an id value of holidays. Using the id value lets you find a specific element in the document. Using the class Attribute The class attribute arbitrarily associates elements together. Many elements can be assigned to the same class, and elements can belong to more than one class, as shown in Listing 2-5. Listing 2-5. Using the class Attribute !DOCTYPE html html head titleExample/title /head body h1 id=mainheader class=headerWelcome to Jacqui's Flower Shop/h1 h2 class=header infoWe are open 10am-6pm, 7 days a week/h2 h3 class=info(closed on national holidays)/h3 /body /html In Listing 2-5, the h1 element belongs to the header class, the h2 element belongs to the header and info classes, and the h3 element belongs just to the info class. As you can see, you can add an element to multiple classes just by separating the class names with spaces. Understanding Element Content Elements can contain text, but they can also contain other elements. Following is an example of an element that contains other elements: ... div class=dcell img src=rose.png/ label for=roseRose:/label input name=rose value=0 required /div ... The div element contains three others: an img, a label, and an input element. You can define multiple levels of nested elements, not just the one level shown here. Nesting elements like this is a key concept in HTML because it imparts the significance of the outer element to those contained within (this is a theme I return to later). You can mix text content and other elements, as follows: ... div class=dcell Here is some text content img src=rose.png/ Here is some more text! input name=rose value=0 required /div ...
  • 24. Chapter 2 ■ HTML Primer 16 Understanding Void Elements The HTML specification includes elements that may not contain content. These are called void or self-closing elements and they are written without a separate end tag. Following is an example of a void element: ... img src=rose.png/ ... A void element is defined in a single tag, and you add a / character before the last angle bracket (the character). Strictly speaking, there should be a space between the last character of the last attribute and the / character, as follows: ... img src=rose.png / ... However, browsers are tolerant when interpreting HTML and you can omit the space character. Void elements are often used when the element refers to an external resource. In this case, the img element is used to link to an external image file called rose.png. Understanding the Document Structure There are some key elements that define the basic structure of any HTML document: the DOCTYPE, html, head, and body elements. Listing 2-6 shows the relationship between these elements with the rest of the content removed. Listing 2-6. The Basic Structure of an HTML Document !DOCTYPE html html head ...head content... /head body ...body content... /body /html Each of these elements has a specific role to play in an HTML document. The DOCTYPE element tells the browser that this is an HTML document and, more specifically, that this is an HTML5 document. Earlier versions of HTML required additional information. For example, following is the DOCTYPE element for an HTML4 document: ... !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN http://www.w3.org/TR/html4/strict.dtd ... The html element denotes the region of the document that contains the HTML content. This element always contains the other two key structural elements: head and body. As I said at the start of this chapter, I am not going to cover the individual HTML elements. There are too many of them, and describing HTML5 completely took me more than 1,000 pages in my HTML5 book. That said, I will provide brief descriptions of the elements I use so that you have a good idea of what a document does. Table 2-1 summarizes the elements used in the example document from Listing 2-1, some of which I describe in a little more detail later in this chapter.
  • 25. Chapter 2 ■ HTML Primer 17 Understanding the Metadata Elements The head element contains the metadata for the document—in other words, one or more elements that describe or operate on the content of the document but that are not directly displayed by the browser. The example document contains three metadata elements in the head section: title, script, and style. The title element is the most basic and the contents of this element are used by browser to set the title of the window or tab, and all HTML documents are required to have a title element. The other two elements are more important for this book, as I explain in the sections that follow. Understanding the script Element The script element lets you include JavaScript in your code. This is an element that you will see often once I start covering jQuery in depth. The example document contains one script element, which is shown in Listing 2-7. Listing 2-7. The script Element from the Example Document ... script src=jquery-2.0.2.js type=text/javascript/script ... When you define the src attribute for the script element, you are telling the browser that you want to load the JavaScript contained in another file. In this case, this is the main jQuery library, which the browser will find in the file jquery-2.0.2.js. A single HTML document can contain more than one script element, and you can include the JavaScript code between the start and end tags if you prefer, as shown in Listing 2-8. Table 2-1. HTML Elements Used in the Example Document Element Description DOCTYPE Indicates the type of content in the document body Denotes the region of the document that contains content elements (described in the section “Understanding the Content Elements”) button Denotes a button; often used to submit a form to the server div A generic element; often used to add structure to a document for presentation purposes form Denotes an HTML form, which allows you to gather data from the user and send them to a server for processing h1 Denotes a header head Denotes the region of the document that contains metadata (described in the section “Understanding the Metadata Elements”) html Denotes the region of the document that contains HTML (which is usually the entire document) img Denotes an image input Denotes an input field used to gather a single data item from the user, usually as part of an HTML form script Denotes a script, typically JavaScript, that will be executed as part of the document style Denotes a region of CSS settings; see Chapter 3 title Denotes the title of the document; used by the browser to set the title of the window or tab used to display the document’s content
  • 26. Other documents randomly have different content
  • 27. back
  • 29. back
  • 31. back
  • 33. back
  • 35. back
  • 37. back
  • 39. back
  • 41. back
  • 43. back
  • 45. back
  • 47. back
  • 49. back
  • 51. back
  • 53. back
  • 54. Welcome to our website – the ideal destination for book lovers and knowledge seekers. With a mission to inspire endlessly, we offer a vast collection of books, ranging from classic literary works to specialized publications, self-development books, and children's literature. Each book is a new journey of discovery, expanding knowledge and enriching the soul of the reade Our website is not just a platform for buying books, but a bridge connecting readers to the timeless values of culture and wisdom. With an elegant, user-friendly interface and an intelligent search system, we are committed to providing a quick and convenient shopping experience. Additionally, our special promotions and home delivery services ensure that you save time and fully enjoy the joy of reading. Let us accompany you on the journey of exploring knowledge and personal growth! ebookultra.com