jquery原始碼解析之選擇器實現

2021-08-05 20:12:28 字數 945 閱讀 5999

為什麼$取得的物件要設計成陣列的形式?

jquery內部採用了一種「類陣列物件」的方式作為儲存結構,既可以像物件一樣處理jquery操作,也可以像陣列一樣使用push、pop、shift、sort、each、map等類陣列的方法操作jquery物件。

2.sizzle選擇器

支援九種方式的處理:

// 1.

$(document)

// 2.

$(『』)

// 3.

$(『div』)

// 4.

$(『#test』)

// 5.

$(function(){})

// 6.

$("input:radio", document.forms[0]);

// 7.

$(『input』, $(『div』))

// 8.

$()

// 9.

$("",

// 10

$($(『.test』))

sizzle主要是針對於複雜選擇器表示式,且在不支援queryselectorall情況下,有乙個物件用來記錄跟選擇器相關的屬性以及操作,sizzle查詢的順序是從右到左進行匹配的。類似$(『div a』)這樣的匹配,先搜尋頁面中所有的a標籤,再往後判定它的父節點是否為div,一層一層向上過濾。:

} 一般對於偽類來說,只能從左到右進行匹配,而從效能觸發,採取從右到左。

jQuery選擇器之全選擇器( 選擇器)

在css中,經常會在第一行寫下這樣一段樣式 萬用字元 意味著給所有的元素設定預設的邊距。jquery中我們也可以通過傳遞 選擇器來選中文件頁面中的元素 描述 拋開jquery,如果要獲取文件中所有的元素,通過document.getelementsbytagname 中傳遞 同樣可以獲取到 不難發現...

jQuery選擇器之全選擇器(選擇器)

jquery選擇器之全選擇器 選擇器 在css中,經常會在第一行寫下這樣一段樣式 萬用字元 意味著給所有的元素設定預設的邊距。jquery中我們也可以通過傳遞 選擇器來選中文件頁面中的元素 描述 拋開jquery,如果要獲取文件中所有的元素,通過document.getelementsbytagna...

jquery選擇器之層次選擇器

層次選擇器中包括 1 ancestor descendant 使用 form input 的形式選中form中的所有input元素.即ancestor 祖先 為from,descendant 子孫 為input.例 bgred div 選擇css類為bgred的元素中的搜有元素。2 parent c...