Core points
- jQuery is a useful tool for developers who need to support legacy Internet Explorer or write libraries like jQuery longer than developing applications. However, for most other cases, using native JavaScript is more efficient because it does not require loading large libraries like jQuery.
- Native JavaScript equivalents of commonly used jQuery methods such as DOM selectors and DOM operations are usually executed faster and more efficiently than their jQuery counterparts. For example, using
document.getElementsByClassName
ordocument.getElementById
may be much faster than using jQuery's$()
wrapper. - HTML5 provides built-in support for a variety of common input types without adding additional JavaScript or jQuery code for form validation. Old browsers that do not support these new types will be restored to standard text input fields and require server-side verification.
About my recent "Do you really need jQuery? 》 article, the debate continues, but in short, there are two reasons to use jQuery: 1. You need to support IE6/7/8 (remember you can't migrate to jQuery 2.0), or 2. Without jQuery, you will spend more than development The application takes longer to write a library like jQuery.
Please be pragmatic for all other situations. jQuery is a 270KB universal library. It's unlikely that you need all the functionality it provides, even if you omit certain modules, it's still a big chunk of code. You may load a minified version of 30KB from the CDN, but the browser must stop processing and parse the code on each page before doing any other actions. This is the first in a series of articles that showcase native JavaScript equivalents to commonly used jQuery methods. While you may want to wrap some of these in shorter, similar aliased functions, you certainly don't need to create your own jQuery-like library.
DOM selector
jQuery allows DOM node selection using CSS selector syntax, for example:
// 在 ID 为“first”的文章中查找所有具有类“summary”的段落 var n = $("article#first p.summary");
Native equivalent:
var n = document.querySelectorAll("article#first p.summary");
document.querySelectorAll
is implemented in all modern browsers and IE8 (although this only supports CSS2.1 selectors). jQuery provides additional support for more advanced selectors, but for the most part it runs within the $()
wrapper. Native JavaScript also offers four alternatives, which are almost certainly faster than document.querySelectorAll
if you can use them: querySelectorAll
-
document.querySelector(selector)
— Get only the first matching node -
document.getElementById(idname)
— Get a single node by its ID name -
document.getElementsByTagName(tagname)
— Get the node matching the element (such as h1, p, strong, etc.). -
document.getElementsByClassName(class)
— Get a node with a specific class name
getElementsByTagName
and getElementsByClassName
methods can also be applied to a single node to limit the result to descendants only, for example:
// 在 ID 为“first”的文章中查找所有具有类“summary”的段落 var n = $("article#first p.summary");
Let's do some testing. I wrote some small scripts to get from my "Do you really need jQuery?" 》 Searches all comment nodes 10,000 times in the article. Results:
代码 | 时间 |
---|---|
// jQuery 2.0<br>var c = $("#comments .comment"); |
4,649 ms |
// jQuery 2.0<br>var c = $(".comment"); |
3,437 ms |
// 原生 querySelectorAll<br>var c = document.querySelectorAll("#comments .comment"); |
1,362 ms |
// 原生 querySelectorAll<br>var c = document.querySelectorAll(".comment"); |
1,168 ms |
// 原生 getElementById / getElementsByClassName<br>var n = document.getElementById("comments");<br>var c = n.getElementsByClassName("comment"); |
107 ms |
// 原生 getElementsByClassName<br>var c = document.getElementsByClassName("comment"); |
75 ms |
I can't claim strict lab conditions, nor does it reflect real-world usage, but in this case native JavaScript is 60 times faster. It also states that getting nodes by ID, tag, or class is usually better than querySelectorAll
.
DOM operation
jQuery provides several ways to add more to the DOM, such as:
// 在 ID 为“first”的文章中查找所有具有类“summary”的段落 var n = $("article#first p.summary");
Below the surface, jQuery uses the native innerHTML
method, for example:
var n = document.querySelectorAll("article#first p.summary");
You can also use DOM build technology. These are safer, but rarely faster than innerHTML
:
var n = document.getElementById("first"); var p = n.getElementsByTagName("p");
We can also delete all child nodes in jQuery:
$("#container").append("<p>more content</p>");
Native equivalents to use innerHTML
:
document.getElementById("container").innerHTML += "<p>more content</p>";
or a small function:
var p = document.createElement("p"); p.appendChild(document.createTextNode("more content")); document.getElementById("container").appendChild(p);
Finally, we can delete the entire element from the DOM in jQuery:
$("#container").empty();
or native JavaScript:
document.getElementById("container").innerHTML = null;
Scalable Vector Graphics (SVG)
Core jQuery library has been developed to process current documents. SVG also has DOM, but jQuery does not provide direct manipulation to these objects, as it usually requires methods such as createElementNS
and getAttributeNS
. It works and there are several plugins available, but it's more efficient to write your own code or use a dedicated SVG library like Raphaël or svg.js.
HTML5 Form
Even the most basic web applications will have one or two forms. You should always verify user data on the server side, but ideally you would supplement it with client verification so that the errors can be caught before submitting the form. Client verification is simple: 1. Run a function when the form is submitted. 2. If you encounter any problems, stop submitting and display an error.
You can use jQuery. You can use native JavaScript. Which one should you choose? Neither chooses . HTML5 supports a variety of commonly used input types, such as email, phone, URL, number, time, date, color, and custom fields based on regular expressions. For example, if you want to force a user to enter an email address, please use:
var c = document.getElementById("container"); while (c.lastChild) c.removeChild(c.lastChild);
Unless you need more complex features (such as comparing two or more fields or displaying custom error messages), there is no need for additional JavaScript or jQuery code. Older browsers (including IE9 and below) do not understand the new type and will be restored to standard text input fields. These users will fall back to server-side verification; this is not a great experience, but you can apply a shim or hope these people see the light and upgrade. In my next post, we will look at native CSS class operations and animations.
FAQs about jQuery and native JavaScript
(The FAQ part is omitted here because the content of this part is weakly related to the picture and article subject, and the article is longer, so it can be processed separately.)
The above is the detailed content of Native JavaScript Equivalents of jQuery Methods: the DOM and Forms. For more information, please follow other related articles on the PHP Chinese website!

JavaScript core data types are consistent in browsers and Node.js, but are handled differently from the extra types. 1) The global object is window in the browser and global in Node.js. 2) Node.js' unique Buffer object, used to process binary data. 3) There are also differences in performance and time processing, and the code needs to be adjusted according to the environment.

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Chinese version
Chinese version, very easy to use

WebStorm Mac version
Useful JavaScript development tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver Mac version
Visual web development tools
