Listening for Document Ready
A page can’t be manipulated safely until the document is “ready”. For that reason, we developers have taken the habit to wrap all of our JS code inside the jQuery $(document).ready()
function:
$( document ).ready(function() { console.log( "ready!" ); });
The same result can be achieved easily using pure JavaScript:
document.addEventListener('DOMContentLoaded', function () { console.log( "ready!" ); });
Adding event listeners
Event Listeners are a very important part of JavaScript development. jQuery has a very easy way to handle them:
$(someElement).on('click', function() { // TODO event handler logic });
You don’t need jQuery to create event listeners in JavaScript. Here’s how to do so:
someElement.addEventListener('click', function() { // TODO event handler logic });
Selecting elements
jQuery makes it super easy to select elements using an ID, a class name, tag name, etc:
// By ID $('#myElement'); // By Class name $('.myElement'); // By tag name $('div'); // Children $('#myParent').children(); // Complex selecting $('article#first p.summary');
Pure JavaScript features various way to select elements. All of the methods below work on all modern browsers as well as IE8+.
// By ID document.querySelector('#myElement'); // By Class name document.querySelectorAll('.myElement'); // By tag name document.querySelectorAll('div'); // Children $('#myParent').children(); // Complex selecting document.querySelectorAll('article#first p.summary');
Using Ajax
As most of you know, Ajax is a set of technologies allowing you to create asynchronymous web applications. jQuery have a set of useful methods for Ajax, including get()
as shown below:
$.get( "ajax/test.html", function( data ) { $( ".result" ).html( data ); alert( "Load was performed." ); });
Although jQuery makes Ajax development easier and faster, it’s a sure thing that you don’t need the framework to use Ajax:
var request = new XMLHttpRequest(); request.open('GET', 'ajax/test.html', true); request.onload = function (e) { if (request.readyState === 4) { // Check if the get was successful. if (request.status === 200) { console.log(request.responseText); } else { console.error(request.statusText); } } };
Adding and removing classes
If you need to add or remove an element’s class, jQuery has two dedicated methods to do so:
// Adding a class $('#foo').addClass('bold'); // Removing a class $('#foo').removeClass('bold');
Without jQuery, adding a class to an element is pretty easy. To remove a class, you’ll need to use the replace()
method:
// Adding a class document.getElementById('foo').className += 'bold'; // Removing a class document.getElementById('foo').className = document.getElementById('foo').className.replace(/^bold$/, '');
Fade In
Here’s a practical example of why jQuery is so popular. Fading an element only takes a single line of code:
$(el).fadeIn();
The exact same effect can be achieved in pure JavaScript, but the code is way longer and more complicated.
function fadeIn(el) { el.style.opacity = 0; var last = +new Date(); var tick = function() { el.style.opacity = +el.style.opacity + (new Date() - last) / 400; last = +new Date(); if (+el.style.opacity < 1) { (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16); } }; tick(); } fadeIn(el);
Source: Stack Overflow
Hiding and showing elements
Hiding and showing elements is a very common task. jQuery offers the hide()
and show()
methods for modifying the display of an element.
// Hiding element $(el).hide(); // Showing element $(el).show();
In pure JavaScript, showing or hiding elements isn’t more complicated:
// Hiding element el.style.display = 'none'; // Showing element el.style.display = 'block';
DOM manipulation
Manipulating the DOM with jQuery is very easy. Let’s say you would like to append a <p>
element to #container
:
$("#container").append("<p>more content</p>");
Doing so in pure JavaScript isn’t much of a big deal either:
document.getElementById("container").innerHTML += "<p>more content</p>";
Further reading
To complete this article, I’ve compiled five very useful blog posts and websites dedicated to using JavaScript without jQuery. All links below feature many practical examples.