jQuery的定位就是一個(gè)DOM的操作庫(kù),那么可想而知選擇器是一個(gè)至關(guān)重要的模塊。Sizzle,作為一個(gè)獨(dú)立全新的選擇器引擎,出現(xiàn)在jQuery 1.3版本之后,并被John Resig作為一個(gè)開源的項(xiàng)目,可以用于其他框架:Mool、Dojo、YUI等。
jQuery是總?cè)肟?,選擇器支持9種方式的處理:
1.$(document) 2.$('<div>’) 3.$('div') 4.$('#test') 5.$(function(){}) 6.$("input:radio", document.forms[0]); 7.$('input', $('div')) 8.$() 9.$("<div>", { "class": "test", text: "Click me!", click: function(){ $(this).toggleClass("test"); } }).appendTo("body"); 10.$($('.test'))
jQuery這個(gè)選擇器重構(gòu)了幾次后,現(xiàn)在邏輯結(jié)構(gòu)相當(dāng)?shù)那逦?,一看大概就知道,不能不說jQuery的反模式非職責(zé)單一深受開發(fā)者喜歡,一個(gè)接口承載的職責(zé)越多內(nèi)部處理就越復(fù)雜了,jQuery查詢的對(duì)象是dom元素,查詢到目標(biāo)元素后,如何存儲(chǔ)?
? 查詢的到結(jié)果儲(chǔ)存到j(luò)Query對(duì)象內(nèi)部,由于查詢的dom可能是單一元素,也可能是合集
? jQuery內(nèi)部應(yīng)該要定義一個(gè)合集數(shù)組,用于存在選擇后的dom元素
? 當(dāng)然啦,根據(jù)API,jQuery構(gòu)建的不僅僅只是DOM元素,還有HTML字符串、Object、[] 等等…
看看入口的構(gòu)造函數(shù),如右側(cè)代碼:
init: function(selector, context, rootjQuery) { //如右側(cè)代碼 }
源碼縮進(jìn)后的結(jié)構(gòu):
? 處理""、null、undefined、false、返回this、增加程序的健壯性
? 處理字符串
? 處理DOMElement,返回修改過后的實(shí)例對(duì)象this
? 處理$(function(){})
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)