第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評論
占位
占位

Sizzle過濾器原理(下)

除了判斷的過程,那么還涉及到節(jié)點的關(guān)系處理,如:

var selector = "div > div.Aaron [name=ttt]";

節(jié)點與節(jié)點之間是有層級關(guān)系的,這里就遇到了“>”與“空”。子元素組合器(E > F)和(E F)都作為后代組合,但是他們有所不同,更具體的是(E > F)它只會選擇第一級的后代,那么我們從右邊往左邊匹配就會遇到這樣的情況,[name=ttt]節(jié)點與div.Aaron中間的連接符“空”則為后代選擇器,那么意味著[name=ttt]元素的可能是div.Aaron元素的一個孩子,孫子,曾孫等。

同理div.Aaron與div的連接符是“>” 子元素選擇器,這個簡單只能是父子關(guān)系。除此之外,還有相鄰兄弟選擇器“+”與“~”,(prev + next) 和 (prev ~ siblings)之間最值得注意的不同點是他們各自的可及之范圍。前者只達(dá)到緊隨的同級元素,后者擴展了該達(dá)到跟隨其的所有同級元素。

針對選擇器的層級關(guān)系:
首先“>”與“空”是祖輩關(guān)系,這樣可以理解是線型的,那么我們只要遞歸檢測每次元素的 parentNode 屬性返回指定節(jié)點的父節(jié)點。

同理“+”與“~”也是類似的兄弟關(guān)系,無非就是擴展的范圍不同,所以針對層級的關(guān)系問題。

jQuery引入了詞素關(guān)系:

relative: {
  ">": {
    dir: "parentNode",
    first: true
  },
  " ": {
    dir: "parentNode"
  },
  "+": {
    dir: "previousSibling",
    first: true
  },
  "~": {
    dir: "previousSibling"
  }
}

這里的dir可以認(rèn)為是查找的一個條件,就是查找父節(jié)點還是兄弟節(jié)點,那么first的意思就是一個快速條件,因為“>”選擇器是一個很明確的父子關(guān)系所以通過標(biāo)記first只需要查找一層即可。我們可以看代碼:

function addCombinator(elems) {
        var elem;
        while ((elem = elems['parentNode'])) {
               if (elem.nodeType === 1) {
                       return elem
               }
        }
};

任務(wù)

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數(shù)過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務(wù)號

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關(guān)注公眾號
關(guān)注后,及時獲悉本課程動態(tài)

舉報

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?