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.