所以jQuery()
是一個函數,document是用作jQuery()
函數參數的一個對象。你如何解釋jQuery(document).ready()?
我想,jQuery(document)
函數然後返回一個對象,它有一個ready()方法?這是對的嗎? jQuery(document)
返回什麼樣的對象?
所以jQuery()
是一個函數,document是用作jQuery()
函數參數的一個對象。你如何解釋jQuery(document).ready()?
我想,jQuery(document)
函數然後返回一個對象,它有一個ready()方法?這是對的嗎? jQuery(document)
返回什麼樣的對象?
jQuery使用了很多魔法(例如爲了避免使用new
)。
jQuery(...)
總是創建一個新的jQuery對象,它包含零個或多個傳遞給它的元素(取決於參數)。
jQuery有一個ready
方法,所以你可以在任何jQuery對象上調用它。如果你使用$().ready()
或$(document).ready()
或$('whatever').ready()
沒關係 - 它總是會做同樣的事情:
ready: function(fn) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add(fn);
return this;
},
正如你所看到的,this
只返回鏈接 - 函數的實際邏輯不使用它根本就沒有。
我想JavaScript是一種面向對象的語言,它具有類(類型)的概念?所以有一個叫做jQuery的類? jQuery函數屬於哪個類? – Aperture 2012-04-26 09:17:51
JavaScript沒有類,它有對象。儘管這不在評論的範圍之內 - 但是在這裏有很多關於這方面的高票(=>好)的問題/回答。但是,無論如何,這裏有一個簡短的答案:'jQuery()'是一個*構造函數*,它包含魔法,即使沒有'new'也能正常工作。 – ThiefMaster 2012-04-26 09:18:41
ThiefMaster的評論是完全準確的,但如果您對某種形式的面向對象支持的語言不熟悉,可能會產生誤導。 Javascript可以用於OO時尚。 「class」這個詞是Javascript中沒有太多意義的部分。我也同意這個問題超出了這個特定問題的範圍。 – 2012-04-26 09:26:05
jQuery(document)
返回什麼樣的對象呢?
它返回一個jQuery object:
jQuery對象包含文檔對象模型(DOM)已經從HTML字符串創建或從一個文件選擇的要素的集合。
的jQuery
方法本身被記錄在這裏:http://api.jquery.com/jQuery/#jQuery1
此函數的第二和第三製劑創建使用以某種其它方式已經選擇了一個或多個DOM元素jQuery對象。該工廠的一個常見的用途是調用已傳遞給回調函數的元素jQuery的方法...
的jQuery(...)
功能也常用於縮寫$(...)
,如:
$(document)
基本上它是jQuery庫中的第一個常用鉤子。你會經常看到這樣使用:
$(document).ready(function() {
// This code gets called once the document has finished loading
// to the point where you'd want to use the jQuery library against the DOM
});
這裏是關於.ready
方法的文檔:
雖然JavaScript提供用於執行代碼的加載事件當一個頁面被渲染時,這個事件不會被觸發,直到所有資源(如圖像)都被完全接收。在大多數情況下,腳本可以在DOM層次結構完全構建後立即運行。處理程序傳遞給。準備就緒()保證後的DOM準備好執行,因此,這通常是連接的所有其他事件處理程序和運行其它jQuery代碼的最佳場所......
參考jQuery文檔:
http://api.jquery.com/jQuery/ - 您對jQuery
函數的jQuery(element)
版本感興趣。它將您傳遞的元素包裝在新的jQuery
對象中。然後這個對象包含一個.ready()方法,您可以在其中傳遞一個事件處理函數作爲函數。
如果你把typeof文件,你會得到對象,所以jQuery(文檔)會給文檔的jQuery對象。
你可能已經做了像$(this)一樣把它當作jQuery對象。使用javascript關鍵字,我們可以調用所有的dom方法/屬性,但不能使用jQuery方法和屬性,這與$(this)類似,我們可以調用所有的jquery方法/屬性,但不能調用基本的dom方法和屬性。
現在$(document).ready()意味着讓dom對象文檔將其轉換爲jQuery對象並將準備好的函數附加到它。
下面是我在Chrome控制檯給出的幾個命令來解釋它。
typeof document
"object"
$(document).ready
function (a){e.bindReady(),A.add(a);return this}
document.ready
undefined
這裏的document.ready顯示不確定的。就緒顯示與jQuery的幫助
'的jQuery(文檔)'返回一個jQuery它的定義明確指出它不知道DOM和$(文件)對象,包含'document' DOM元素。它與每個其他'$(x)'選擇器相同,它返回包裝在jQuery對象中的DOM元素。 – 2012-04-26 09:12:39