Von jQuery zu nativem Javascript

Von jQuery zu Javascript

jQuery ist auch nach mehr als 15 Jahren eine nützliche und pragmatische Library, aber viele Projekte können genauso gut ohne jQuery mit einfachem Javascript durchgeführt werden.

Die grundlegenden Arbeiten wie das Selektieren von Elementen, Zuweisen von CSS, Animationen und der Datenaustausch mit dem Server sind mit Vanilla Javascript heute nicht mehr komplizierter, aber reines Javascript ist schneller und leichter.

18-12-15 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

querySelector und querySelectorAll

Ein oder mehrere Elemente des DOM auswählen und ihnen neue CSS-Eigenschaften zuweisen – das ist das Brot- und Buttergeschäft für Javascript auf Webseiten. Das Pendant von $() oder jQuery() in Javascript ist querySelector und querySelectorAll. Das ist – zugegeben – mehr Schreibarbeit, mehr aber auch nicht.

$(".block");

wird zu

document.querySelector(".block");

Allerdings würde jQuery Methoden wie $(".block").fadeIn oder $(".block").hide alle Elemente der CSS-Klasse .block anwenden, document.querySelector(".block") nur auf das erste Element. Da haben wir also einen kleinen Fallstrick.

querySelectorAll(".block") gibt eine NodeList mit allen Elementen der Klasse .block zurück und braucht eine Interation über die NodeList.

$(".block").FadeIn();

wird zu

document.querySelectorAll(".block").forEach(block => { block.FadeIn() });

Einfache jquery Methoden

Die subtilen kleinen jQuery-Methoden gibt es mit dem reinen Javascript nicht. Theoretisch würden eine Erweiterung des Prototyps und etwas CSS reichen.

Element.prototype.show = function(){
	this.classList.remove("hide");
	this.classList.add("show");
};

Element.prototype.hide = function(){
	this.classList.remove("show");
	this.classList.add("hide");
};

Prototyping auf DOM-Elementen ist kritisch, daran sind viele der alten Javascript-Libraries zugrunde gegangen. jQuery hat das durch ein Wrapper-Element umschifft.

CSS zuweisen ohne jQuery

Noch so eine Brot- und Butteraufgabe für Javascript: neues CSS zuweisen. Die Methode .css aus jQuery lässt sich einfach in reines Javascript mit .style übersetzen.

$("h2").css("color", "blue");
document.querySelector ("h2").style = "color: blue";

Das ist allerdings nicht so ganz ohne Tücke und Fallstricke: Wenn das Element bereits ein style-Attribut hat, wird das alte style-Attribut überschrieben.

document.querySelector("h2").style.color = "blue";

Ein Element in einem anderen Element suchen

jQuery sucht mit find() – genial einfach. Das geht aber genauso gut mit querySelector.

let wrapper = $(".block");
wrapper.find (".column");

// ohne jQuery

let wrapper = document.querySelector(".block");
block.querySelector (".column");

Navigation im DOM-Baum

$("block").prev();
$("block").next();
$("block").parent();
const block = document.querySelector(".block");
block.nextElementSibling;
block.previousElementSibling;
block.parentElement;

Abhören und Reagieren auf Events

$(".button").click(function(e)      {  /* Click Event */  });
$(".button").mouseenter(function(e) {  /* Click Event */  });
$(document).keyup(function(e)       {  /* Key UP */ });
document.querySelector(".button").addEventListener("click", (e) => { /* ... */ });
document.querySelector(".button").addEventListener("mouseenter", (e) => { /* ... */ });
document.addEventListener("keyup", (e) => { /* ... */ });