亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

css3 - jQuery/CSS選擇器效率問題

瀏覽:88日期:2023-08-05 16:19:33

問題描述

<p id='all'> <p class='class1'>one</p> <p class='class1'>two</p> <p class='class1'>three</p> <p class='class1'>four</p> <p class='class2'>five</p></p>

通過實驗發(fā)現(xiàn)$('#all').find('.class2')要比$('#all .class2')性能好,為什么呢?jQuery和CSS都用的是Sizzle選擇器引擎,他的解析方式是從右向左。也有說如果最左邊指定了id,就會先取id,這時是不是就會從左向右匹配了?

問題解答

回答1:

沒看過具體實現(xiàn),不過,前者顯然是從左到右匹配,後者如果也是,性能應該一樣。既然前者性能更好,那麼顯然後者該是從右向左的了。

可以考慮再做一個測試:

<p id='all'> <span class='class1'>one</p> <span class='class1'>two</p> <span class='class1'>three</p> <span class='class1'>four</p> <p class='class2'>five</p></p>

測試 $('#all').find('p.class2') 和 $('#all p.class2')

回答2:

Sizzle選擇器引擎的主要工作就是向上兼容querySelectorAll這個API,假如所有瀏覽器都支持該API,那Sizzle就沒有存在的必要性了。sizzle選擇器一般是從右向左匹配(在不存在位置偽類的時候),Sizzle也不完全是采用從右到左,如果選擇器表達式的最左邊存在#id選擇器,就會首先對最左邊進行查詢,并將其作為下一步的執(zhí)行上下文,最終達到縮小上下文的目的, $('#all.class2') 這句將先匹配所有#all元素,然后將其作為上下文在里面查找.class2 $('#all').find('.class2')而這里則先匹配#all,再從中找匹配.class2;兩種如果是使用sizzle的話,性能應該是差不多的。但是在支持querySelectorAll的瀏覽器中,可能前者沒有使用sizzle引擎,而直接調用原生的,就導致二者不一樣了。所有鄙人猜測就出現(xiàn)了題主的結果

標簽: CSS
相關文章:
主站蜘蛛池模板: 在线亚洲色图 | 日韩高清不卡在线 | 成 人 黄 色 全 集 | 一级欧美一级日韩 | 黄视频免费观看 | 啪啪欧美| 91短视频在线播放 | 欧美黑人换爱交换乱理伦片 | 亚洲线精品一区二区三区 | 精品一区二区在线观看 | 青青草久草视频 | 中文字幕在线播放不卡 | 亚洲一区二区三区福利在线 | 日韩免费一区二区 | 国产福利小视频 | 午夜爱爱毛片xxxx视频免费看 | 特级毛片免费 | 日韩亚洲一区中文字幕 | 久久综合噜噜激激的五月天 | 国产女人伦码一区二区三区不卡 | 一级特黄网站 | 奇米亚洲春色 | 一区二区三区精品国产 | 日产欧美亚洲 | 香港黄色毛片 | 欧美激情毛片 | 午夜在线观看cao | 国产精品第二页 | 精品美女模特在线网站 | 成人毛片18女人毛片 | 美女一级毛片免费看看 | 岛国片欧美一级毛片 | 婷婷亚洲综合 | 亚洲欧美日韩在线2020 | 欧美在线观看黄色 | 国产视频每日更新 | 日韩丝袜在线 | 精品国产一区二区在线观看 | 欧美视屏在线观看 | 国产精品福利在线观看秒播 | 91在线精品视频 |