搜尋
首頁web前端js教程jQuery的Read()方法取代原生JS詳解

在jQuery 3.0的版本前, ready經典用法是用一個匿名函數,像這樣:

$(document).ready(function() {
 // Handler for .ready() called.
});

   

jQuery 3.0 ready() 變化

jQuery 3.0 ready() 變化

jQuery 3.0 ready() 變化

jQuery 3.00yQueryd ready方法:

    在document元素上操作: $(document).ready(handler);

    在空元素上操作: $().ready(handler);

 )操作: $(handler);

上述所有命名的變種在功能上是等價的。無論是哪個元素,在DOM載入完畢之後其指定的處理程序都會被呼叫。換句話說,這裡的DOM載入完畢並不表示在文件中的某個具體的元素,例如img元素,載入完畢。相反,這裡表示的是整個DOM樹載入完畢。

在jQuery 3.0中,除了$(handler) 其他的ready方法都被棄用。

官方聲明為此:

這是因為選擇器並沒有和ready()建立聯繫,不僅低效而且會導致瀏覽器引擎對該方法的行為進行不正確的假設。

ready 事件和 load 事件的差異

當DOM載入完成且元素能夠被安全存取時就會觸發ready事件。另一方面,load事件卻在DOM和所有資源載入後觸發。

可以像下面這樣使用load事件:

$(window).on("load", function(){
 // Handler when all assets (including images) are loaded
});

   


這樣的話,不僅要等到DOM結構能完全訪問,而且還需要等到所有的圖片資源完全加載完畢(加載時間取決於圖片文件大小)才能執行函數。

正常的DOM操作你可能不需要load事件,但是如果你想要在所有的資源被加載完畢之前展示一個旋轉的加載器樣式,比如,又或者你想要用JS計算一下圖片的大小,這可能是個好的選擇。

你可能不需要jQuery.ready()

ready 方法可以確保程式碼只在所有DOM元素能被安全操縱時才執行。 但這意味著什麼呢?這表示當你要執行的js程式碼嵌在HTML中某個片段中時,瀏覽器也要載入完以下元素才能執行。

就像下面這個例子一樣:

<!doctype html>
<html>
 <head>
 <meta charset="utf-8">
 <title>.ready() tutorial</title>
 <script src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
 <script>
  $(function(){ // .ready() callback, is only executed when the DOM is fully loaded
  var length = $("p").length;
  // The following will log 1 to the console, as the paragraph exists.
  // This is the evidence that this method is only called when the
  // DOM is fully loaded
  console.log(length);
  });
 </script>
 </head>
 <body>
 <p>I&#39;m the content of this website</p>
 </body>
</html>

   

如果你要執行的javascript程式碼放在body末尾,你可能不需要使用ready()方法,因為瀏覽器解析到javascript時你可能試圖操縱而存取的DOM元素已經載入完了:

<!doctype html>
<html>
 <head>
 <meta charset="utf-8">
 <title>.ready() tutorial</title>
 </head>
 <body>
 <p>I&#39;m the content of this website</p>
 <script src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
 <script>
  var length = $("p").length;
  // The following will log 1 to the console, as the paragraph exists.
  console.log(length);
 </script>
 </body>
</html>

   

原生JavaScript ready()替代

對於現代瀏覽器以及IE9+,你可以透過監聽DOMContentLoaded 事件內容的內容?

但是,請注意,如果事件已經發射,回呼將不會被執行。為了確保回呼總是運行,jQuery檢查文檔reference)的「readyState」屬性,如果屬性值變為 complete,則立即執行回呼函數:

document.addEventListener("DOMContentLoaded", function(){
 // Handler when the DOM is fully loaded
});

   

包括domReady庫,已經實現了這個解決方案。

舊版的IE瀏覽器

對於IE8及以下的瀏覽器,你能使用onreadystatechange 事件去監聽文件的readyState 屬性:

var callback = function(){
 // Handler when the DOM is fully loaded
};
 
if (
 document.readyState === "complete" ||
 (document.readyState !== "loading" && !document.documentElement.doScroll)
) {
 callback();
} else {
 document.addEventListener("DOMContentLoaded", callback);
}

   

任何瀏覽器上運行。這也會導致一個時間延遲,因為它會等待所有的資產被載入。

注意,在這個解決方案中你也要檢查readyState,如上文所述,這樣能確保回調總是能夠被執行。 🎜🎜🎜🎜
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
jquery实现多少秒后隐藏图片jquery实现多少秒后隐藏图片Apr 20, 2022 pm 05:33 PM

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

axios与jquery的区别是什么axios与jquery的区别是什么Apr 20, 2022 pm 06:18 PM

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

jquery怎么修改min-height样式jquery怎么修改min-height样式Apr 20, 2022 pm 12:19 PM

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

jquery怎么在body中增加元素jquery怎么在body中增加元素Apr 22, 2022 am 11:13 AM

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

jquery中apply()方法怎么用jquery中apply()方法怎么用Apr 24, 2022 pm 05:35 PM

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

jquery怎么删除div内所有子元素jquery怎么删除div内所有子元素Apr 21, 2022 pm 07:08 PM

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

jquery on()有几个参数jquery on()有几个参数Apr 21, 2022 am 11:29 AM

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

jquery怎么去掉只读属性jquery怎么去掉只读属性Apr 20, 2022 pm 07:55 PM

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版