遍歷的接口我們可以歸為幾大類:
1 祖先 2 同胞兄弟 3 后代 4 過濾
遍歷的接口很多都是具有相似或者說是一類的處理功能,那么這種接口的設(shè)計(jì)我們不能就事論事的一個一個去實(shí)現(xiàn),這樣代碼就會顯得非常累贅也不容易維護(hù),那么就這么幾大類Query分了好幾十API出來,豐富的接口可以讓高層的設(shè)計(jì)更為簡單。但是框架內(nèi)部的卻要簡練。那么針對這種類似功能的接口,jQuery內(nèi)部就會做更多的抽象處理了。
1.針對層級關(guān)系的處理,jQuery就抽出了一個dir的方法,用于根據(jù)傳遞的元素與詞素的位置關(guān)系,查找指定的元素。
parent,parents,parentsUntil等方法如代碼所示:
function dir(elem, dir, until) { //參考右邊代碼 return matched; }
2.我們在上半部的第一章中就提到過迭代器,迭代器是一個框架的重要設(shè)計(jì)。
我們經(jīng)常需要提供一種方法順序的用來處理聚合對象中各個元素,而又不暴露該對象的內(nèi)部,這也是設(shè)計(jì)模式中的迭代器模式。
迭代器除了單純的遍歷,在jQuery內(nèi)部的運(yùn)用最多的就是接口的抽象合并,相同功能的代碼功能合并處理:
jQuery.each({ parent: function(elem) {}, parents: function(elem) {}, nextAll: function(elem) {}, prevAll: function(elem) {}, ................ }, function(name, fn) { api[name] = function(until, selector){ //代碼右圖 }; });
可以看出上面代碼方法,針對相同的功能,節(jié)約了大量的代碼空間。
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報