jQuery的定位就是一個DOM的操作庫,那么可想而知選擇器是一個至關重要的模塊。Sizzle,作為一個獨立全新的選擇器引擎,出現在jQuery 1.3版本之后,并被John Resig作為一個開源的項目,可以用于其他框架:Mool、Dojo、YUI等。
jQuery是總入口,選擇器支持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這個選擇器重構了幾次后,現在邏輯結構相當的清晰了,一看大概就知道,不能不說jQuery的反模式非職責單一深受開發者喜歡,一個接口承載的職責越多內部處理就越復雜了,jQuery查詢的對象是dom元素,查詢到目標元素后,如何存儲?
? 查詢的到結果儲存到jQuery對象內部,由于查詢的dom可能是單一元素,也可能是合集
? jQuery內部應該要定義一個合集數組,用于存在選擇后的dom元素
? 當然啦,根據API,jQuery構建的不僅僅只是DOM元素,還有HTML字符串、Object、[] 等等…
看看入口的構造函數,如右側代碼:
init: function(selector, context, rootjQuery) { //如右側代碼 }
源碼縮進后的結構:
? 處理""、null、undefined、false、返回this、增加程序的健壯性
? 處理字符串
? 處理DOMElement,返回修改過后的實例對象this
? 處理$(function(){})
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報