×
By the end of this chapter, you should be able to:
jQuery is easily one of the most popular JavaScript libraries out there. It is very helpful with DOM manipulation, AJAX, and much more. Instead of using the native DOM API to interact with elements on the page, we can use jQuery to acheive the same functionality, but with an interface which is a bit easier and more friendly.
jQuery was initially released over 10 years ago and grew very quickly, as it was by far the easiest way to handle cross browser differences at the time. However, as browsers have gotten more similar, cross-browser compatibility with JavaScript has been less of an issue, and jQuery is not viewed as being as essential as it once was. Nowadays there are also other frameworks like Angular and React.js, which do not require the use of jQuery
(although you can easily use it with both frameworks).
In spite of its waning popularity, jQuery is still in constant development and in use by over 70% of the top 1,000,000 websites (you can learn more about it's usage here), which makes it a really important library to learn!
You can either download the source code for jQuery at jquery.org or you can easily include it on a page using the CDN: <script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
.
The first thing you will notice with jQuery is that all of the jQuery selectors and many functions begin with a $
. This is just an alias (nickname) for jQuery
, which is the main function we'll be using. So if you've installed jQuery, the expression jQuery === $
will always be true
!
Now that we have jQuery on a page, let's learn how to use it.
$(document).ready
or $(function(){})
To make sure the DOM has loaded, we can use the $(document).ready
function or use $(function(){})
as shorthand. This is
$(document).ready(function(){ // the DOM has now loaded }); $(function() { // a shorter way to wait for the DOM to load }); document.addEventListener("DOMContentLoaded", function() { // a longer way to wait for the DOM to load, without jQuery. // jQuery's syntax is much shorter! });
It's critical that you wait for the DOM to load before using jQuery, otherwise you might try to manipulate DOM elements that aren't on the page yet!
To get started with jQuery, let's find some elements in the DOM! jQuery selects items from the DOM via CSS selectors (another good reason to know them well!), just like querySelector
and querySelectorAll
in vanilla JavaScript. One major difference between jQuery methods and the native JavaScript methods, however, is what they return to you. When you select something (in the example below this will be all the article
tags), jQuery returns an (array-like) object called a jQuery object
.
$(document).ready(function(){ console.log($("article")); });
When you examine this in the Chrome console you will see that this looks like an array with []
notation around it. Just know that you can not directly use vanilla JavaScript methods like innerText
, style
etc. on these. But not to worry, jQuery has all of that covered for us! You can read more about jQuery objects here.
As you start learning jQuery, you may want to 'revert' back to using native DOM methods on jQuery objects. While you can do this, there is almost always a better way to do this with jQuery. So if you find yourself doing things like this, take a step back:
$(document).ready(function(){ var mainElement = document.getElementById('main'); // THIS IS NOT GREAT! });
Why is the code above not great? Because we are mixing jQuery with vanilla JavaScript, when jQuery offers us a more concise syntax! So let's use jQuery selectors instead of document.getElementbyId
. A cleaner version would be:
$(document).ready(function(){ var $mainElement = $('#main'); // THIS IS MUCH BETTER! });
Notice that we added a $
to the definition of the mainElement variable. This is very common when working with jQuery to signify that the variable is a reference to a jQuery object.
Answer the following questions:
jQuery
? What does it enable you to do?$
represent in jQuery?Given the following HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery Exercise</title> </head> <body> <div id="container"> <h1 id="welcome"></h1> <div class="list-container"> <ul class="nav"> <li class="nav-item">Home</li> <li class="nav-item">About Us</li> <li class="nav-item">Contact</li> <li class="nav-item">Careers</li> <li class="nav-item">Apply</li> </ul> </div> </div> <footer> <div class="footer-container"> <ul class="footer-nav"> <li class="footer-nav-item">Learn More</li> <li class="footer-nav-item">Blog</li> <li class="footer-nav-item">Email Us</li> </ul> </div> </footer> </body> </html>
Write the jQuery selectors/code to do the following
jQuery
.footer
element.div
with an id
of "container".li
s inside of the ul
with a class of nav
.li
inside of the div
with a class of list-container
.li
in each of the ul
s.For solutions to these exercises, click here.
When you're ready, move on to Common jQuery Methods