I didn't come here to argue about the differences between native APIs and function libraries, and it is difficult to use these magic stuff during development. However, I would like to discuss whether it is really necessary to load jQuery if only a selector ($) or something similar is used.
Suppose we didn't want to simplify it. Everyone uses jSomething because it supports IE, animation processing, and Selector functions.
Native equivalents
Select Element
- // JQuery
- Var els = $ ('. el ');
-
- // Native
- Var els = document. querySelectorAll ('. el ');
-
- // Shorthand
- Var $ = function (el ){
- Return document. querySelectorAll (el );
- }
-
- Var els = $ ('. el ');
-
- // Or use regex-based micro-selector lib
- // Http://jsperf.com/micro-selector-libraries
Create Element
- // JQuery
- Var newEl = $ ('<div/> ');
-
- // Native
- Var newEl = document. createElement ('div ');
- Add event listener
- // JQuery
- $ ('. El'). on ('event', function (){
-
- });
-
- // Native
- []. ForEach. call (document. querySelectorAll ('. el'), function (el ){
- El. addEventListener ('event', function (){
-
- }, False );
- });
Set/get attributes
- // JQuery
- $ ('. El'). filter (': first '). attr ('key', 'value ');
- $ ('. El'). filter (': first '). attr ('key ');
-
- // Native
- Document. querySelector ('. el'). setAttribute ('key', 'value ');
- Document. querySelector ('. el'). getAttribute ('key ');
- Add/remove/toggle class
- // JQuery
- $ ('. El'). addClass ('class ');
- $ ('. El'). removeClass ('class ');
- $ ('. El'). toggleClass ('class ');
-
- // Native
- Document. querySelector ('. el'). classList. add ('class ');
- Document. querySelector ('. el'). classList. remove ('class ');
- Document. querySelector ('. el'). classList. toggle ('class ');
Additional
- // JQuery
- $ ('. El'). append ($ (' <div/> '));
-
- // Native
- Document. querySelector ('. el'). appendChild (document. createElement ('div '));
Clone
- // JQuery
- Var clonedEl = $ ('. el'). clone ();
-
- // Native
- Var clonedEl = document. querySelector ('. el'). cloneNode (true );
Remove
- // JQuery
- $ ('. El'). remove ();
-
- // Native
- Remove ('. el ');
-
- Function remove (el ){
- Var toRemove = document. querySelector (el );
-
- ToRemove. parentNode. removeChild (toRemove );
- }
Parent Element
- // JQuery
- $ ('. El'). parent ();
-
- // Native
- Document. querySelector ('. el'). parentNode;
- Prev/next element
- // JQuery
- $ ('. El'). prev ();
- $ ('. El'). next ();
-
- // Native
- Document. querySelector ('. el'). previuselementsibling;
- Document. querySelector ('. el'). nextElementSibling;
- XHR aka AJAX
- // JQuery
- $. Get ('url', function (data ){
-
- });
- $. Post ('url', {data: data}, function (data ){
-
- });
-
- // Native
-
- // Get
- Var xhr = new XMLHttpRequest ();
-
- Xhr. open ('get', url );
- Xhr. onreadystatechange = function (data ){
-
- }
- Xhr. send ();
-
- // Post
- Var xhr = new XMLHttpRequest ()
-
- Xhr. open ('post', url );
- Xhr. onreadystatechange = function (data ){
-
- }
- Xhr. send ({data: data });
Of course, you can also use the library. Here, the lightweight library can find some libraries for specific tasks, but first make sure that you cannot complete the task without this library, otherwise-use native JavaScript.