欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery代碼優(yōu)化 選擇符篇

 更新時(shí)間:2011年11月01日 17:08:39   作者:  
毫無(wú)疑問(wèn),jQuery的獨(dú)到之處就是它以集合為中心的操作。為了取得DOM對(duì)象集合,jQuery利用JavaScript不僅實(shí)現(xiàn)了(它誕生時(shí))很多瀏覽器不支持的CSS選擇符,還實(shí)現(xiàn)了不少獨(dú)到的自定義選擇符,為在文檔中查找元素提供了極大的便利
本文就從選擇符的角度簡(jiǎn)單探討一下優(yōu)化jQuery代碼的問(wèn)題。

Sizzle的運(yùn)行機(jī)制

jQuery從1.3開(kāi)始把根據(jù)選擇符表達(dá)式查找元素的代碼獨(dú)立出來(lái),也就是Sizzle引擎。當(dāng)我們把一個(gè)選擇符表達(dá)式(比如"#id"、".class"、":nth-child(2)")傳遞給$()函數(shù)時(shí),Sizzle在內(nèi)部會(huì)優(yōu)先利用瀏覽器原生支持的DOM方法來(lái)查找元素,以求得最大的執(zhí)行速度。以下就是Sizzle會(huì)優(yōu)先選用的幾個(gè)標(biāo)準(zhǔn)的原生方法(各個(gè)方法的用途不再贅述):
復(fù)制代碼 代碼如下:

getElementById()
getElementsByTagName()
getElementsByClassName()
querySelectorAll()

如果瀏覽器不支持某個(gè)方法,或者傳入的選擇符表達(dá)式不是標(biāo)準(zhǔn)選擇符(如":eq()"、":odd"或其他自定義選擇符),Sizzle就會(huì)使用document.getElementsByTagName('*')來(lái)取得文檔中的所有元素,然后再遍歷并測(cè)試每個(gè)元素。顯然,這是萬(wàn)不得已才會(huì)用的方法;可想而知,這個(gè)最笨的方法,效率也是最低的。

優(yōu)化示例
舉個(gè)例子,假設(shè)我們要取得頁(yè)面表單中的所有的文本框,即:

<input type="text">
可以使用兩個(gè)選擇符:
復(fù)制代碼 代碼如下:

$('input[type="text"]')
$('input:text')

第一個(gè)選擇符是標(biāo)準(zhǔn)的CSS屬性選擇符,第二個(gè)選擇符是自定義選擇符。根據(jù)前面對(duì)Sizzle引擎的分析可知,在大多數(shù)現(xiàn)代瀏覽器(支持原生querySelectorAll()方法的瀏覽器)中,第一個(gè)選擇符的速度比第二個(gè)要快很多。

再舉一個(gè)例子。假設(shè)有下面兩個(gè)jQuery查詢(xún):
復(fù)制代碼 代碼如下:

$('input').eq(1)
$('input:eq(1)')

第一個(gè)查詢(xún)先通過(guò)標(biāo)準(zhǔn)的CSS元素選擇符查找所有input元素,然后再調(diào)用jQuery的eq()方法取得匹配結(jié)果中的第二個(gè)元素(eq()方法的索引參數(shù)是從0開(kāi)始計(jì)算的)。第二個(gè)查詢(xún)則使用了自定義的偽類(lèi)選擇符:eq()。通過(guò)測(cè)試可以看出,第一種方法的速度比第二種方法快得就更多了。

結(jié)論
要盡可能使用CSS規(guī)范中規(guī)定的選擇符,除非沒(méi)有標(biāo)準(zhǔn)選擇符,才考慮使用jQuery的自定義選擇符。

(注:本文基于《jQuery基礎(chǔ)教程(第3版)》相關(guān)章節(jié)內(nèi)容編撰而成。)

相關(guān)文章

  • jQuery實(shí)現(xiàn)base64前臺(tái)加密解密功能詳解

    jQuery實(shí)現(xiàn)base64前臺(tái)加密解密功能詳解

    這篇文章主要介紹了jQuery實(shí)現(xiàn)base64前臺(tái)加密解密功能,結(jié)合實(shí)例形式分析了jquery.base64.js實(shí)現(xiàn)前臺(tái)base64加密與解密功能的實(shí)現(xiàn)方法,并給出了java實(shí)現(xiàn)后臺(tái)base64加密解密的操作示例對(duì)比驗(yàn)證加密效果,需要的朋友可以參考下
    2017-08-08
  • Javascript 使用ajax與C#獲取文件大小實(shí)例詳解

    Javascript 使用ajax與C#獲取文件大小實(shí)例詳解

    本文章向碼農(nóng)們介紹了js ajax獲取文件大小的實(shí)例,涉及JavaScript調(diào)用ajax交互及后臺(tái)C#文件操作的相關(guān)技巧,需要的朋友可以參考下
    2017-01-01
  • Jquery中擴(kuò)展方法extend使用技巧

    Jquery中擴(kuò)展方法extend使用技巧

    extend是常用的參數(shù)處理函數(shù),特別是對(duì)默認(rèn)值的使用,但是在使用過(guò)程中,默認(rèn)值往往是不能被改變的,需要的朋友可以參考下
    2014-08-08
  • 最新最熱最實(shí)用的15個(gè)jQuery插件匯總

    最新最熱最實(shí)用的15個(gè)jQuery插件匯總

    本文給大家匯總介紹了2015年7月最新發(fā)布的最熱最實(shí)用的15款jQuery插件,都有著非常炫酷的效果,十分的實(shí)用,這里推薦給大家。
    2015-07-07
  • jQuery EasyUI datagrid實(shí)現(xiàn)本地分頁(yè)的方法

    jQuery EasyUI datagrid實(shí)現(xiàn)本地分頁(yè)的方法

    這篇文章主要介紹了jQuery EasyUI datagrid實(shí)現(xiàn)本地分頁(yè)的方法,以實(shí)例形式較為詳細(xì)的分析了本地分頁(yè)的原理與相關(guān)的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • 推薦30個(gè)新鮮出爐的精美 jQuery 效果

    推薦30個(gè)新鮮出爐的精美 jQuery 效果

    jQuery 是最流行和使用最廣泛的 JavaScript 框架,它簡(jiǎn)化了HTML文檔遍歷,事件處理,動(dòng)畫(huà)以及Ajax交互,幫助Web開(kāi)發(fā)人員更快速的實(shí)現(xiàn)各種精美的界面效果
    2012-03-03
  • jQuery的position()方法詳解

    jQuery的position()方法詳解

    position()函數(shù)用于返回當(dāng)前匹配元素相對(duì)于其被定位的祖輩元素的偏移,也就是相對(duì)于被定位的祖輩元素的坐標(biāo)。該函數(shù)只對(duì)可見(jiàn)元素有效。
    2015-07-07
  • jQuery中使用validate插件校驗(yàn)表單功能

    jQuery中使用validate插件校驗(yàn)表單功能

    這篇文章主要介紹了jQuery中使用validate插件校驗(yàn)表單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒,需要的朋友可以參考下
    2019-05-05
  • js根據(jù)json數(shù)據(jù)中的某一個(gè)屬性來(lái)給數(shù)據(jù)分組的方法

    js根據(jù)json數(shù)據(jù)中的某一個(gè)屬性來(lái)給數(shù)據(jù)分組的方法

    今天小編就為大家分享一篇js根據(jù)json數(shù)據(jù)中的某一個(gè)屬性來(lái)給數(shù)據(jù)分組的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • JQuery 技巧和竅門(mén)整理(8個(gè))

    JQuery 技巧和竅門(mén)整理(8個(gè))

    JQuery 是一款快速、易于使用的 JavaScript 框架。芒果介紹幾個(gè)實(shí)用的 JQuery 技巧和竅門(mén)。
    2010-04-04

最新評(píng)論