jQuery原始碼 tokenize方法

2022-11-27 11:37:34 字數 2007 閱讀 2836

1

//得到由選擇器生成的token物件的陣列(下面的groups)2//

sizzle的token格式如下 :3//

比如"title,div > :nth-child(even)"解析下面的符號流4//

[ ,5

//[,6//

,7//9

//]10//]11

//有多少個並聯選擇器,裡面就有多少個陣列,陣列裡面是擁有value與type的物件

1213

//tokenize兩個作用:1.解析選擇器;2.將解析結果存入快取

14 tokenize = sizzle.tokenize = function

( selector, parseonly )

2425 sofar =selector;

26 groups =;

2728

//這裡的前處理器為了對匹配到的token適當做一些調整

29 prefilters =expr.prefilter;

3031

//迴圈處理字串

32while

( sofar )

49//

往規則組裡邊壓入一個token序列,目前token序列還是空的

50 groups.push( (tokens =) );51}

5253 matched = false;54

55//

combinators

56//

rcombinators = new regexp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),

57//

rcombinators用來匹配四種關係符,即》+~和空白

58if ( (match =rcombinators.exec( sofar )) ) );

71 sofar =sofar.slice( matched.length );72}

7374

//filters

75//

下面通過for語句對sofar逐一匹配id、tag、class、child、attr、pseudo型別的選擇器

76//

若匹配到了,則先呼叫該型別選擇器對應的預過濾函式,

77//

然後,將結果壓入tokens陣列,繼續本次迴圈。

78for ( type in

expr.filter ) );

93//

將匹配結果之後的字串賦予sofar,繼續解析

94 sofar =sofar.slice( matched.length );95}

96}9798

//matched為false,說明本次迴圈沒有效的選擇器(包括關係符和id、class等型別選擇器)

99if ( !matched )

102}

103104

//return the length of the invalid excess

105//

if we're just parsing

106//

otherwise, throw an error or return tokens

107return parseonly ?

108sofar.length :

109 sofar ?

110sizzle.error( selector ) :

111//

cache the tokens

112 tokencache( selector, groups ).slice( 0);

113 };

畫一張直觀圖便於理解

jQuery 方法

方法 描述animate 對被選元素應用 自定義 的動畫 clearqueue 對被選元素移除所有排隊函式 仍未執行的 delay 對被選元素的所有排隊函式 仍未執行 設定延遲 dequeue 移除下一個排隊函式,然後執行函式 fadein 逐漸改變被選元素的不透明度,從隱藏到可見 fadeout ...

jQuery on 方法

jquery on 方法是官方推薦的繫結事件的一個方法。selector on event,childselector,data,function,map 由此擴充套件開來的幾個以前常見的方法有.bind p bind click function p on click function deleg...

jQuery on 方法

jquery on 方法是官方推薦的繫結事件的一個方法。selector on event,childselector,data,function,map 由此擴充套件開來的幾個以前常見的方法有.bind p bind click function p on click function deleg...