我對jQuery核心有疑問。從文檔和幾本書我得到:澄清jQuery「包裝器」對象
var obj = $("div");
返回一個包裝對象AKA所選DOM元素的集合與其他方法。 (請隨時糾正我可能會說錯的任何內容)。我讀過jQuery函數$()返回一個包裝對象,或者它真的返回一個jQuery的副本加一個包裝元素的集合?
任何幫助是極大的讚賞。
乾杯
我對jQuery核心有疑問。從文檔和幾本書我得到:澄清jQuery「包裝器」對象
var obj = $("div");
返回一個包裝對象AKA所選DOM元素的集合與其他方法。 (請隨時糾正我可能會說錯的任何內容)。我讀過jQuery函數$()返回一個包裝對象,或者它真的返回一個jQuery的副本加一個包裝元素的集合?
任何幫助是極大的讚賞。
乾杯
它返回一個jQuery對象的實例,包你與你的CSS選擇器選擇的元素(在這種情況下,一個jQuery對象包裝所有的div文檔中)。
jQuery不是被「複製」的東西 - 它是包裹在DOM元素中的行爲。
var jqDivs = $("div");
var jqButtons = $("button");
var jqSubmitButton = $("button#submit");
這3個變量引用3個不同的對象。他們都實現了相同的jQuery行爲,但他們在不同的元素上執行。 jqDivs.hide()會隱藏div - jqButtons.hide()會隱藏按鈕,而jqSubmitButton.hide()只會隱藏id = submit的按鈕。
術語「包裝」對我有點誤導。 jQuery的保持引用由所提供的選擇器由調用返回的jQuery的實例的數字屬性匹配的元素,所以:
var allTheDivs = $('div');
返回與引用一個jQuery對象的文檔中的所有的div,和:
allTheDivs[0]; // or allTheDivs['0'];
是對第一個的引用。所以,如果你然後做:
allTheDivs.hide();
它調用了jQuery實例的隱藏方法allTheDivs對所有涉及的元件其週期和隱藏它們。但不要嘗試:
allTheDivs['0'].hide()
因爲這將嘗試調用隱藏 DOM元素,這可能不會存在,因此在出現錯誤restult上。