jQuery性能優(yōu)化和技巧

盡量使用最新版本的jQuery

jQuery每一個(gè)新的版本都會(huì)較上一個(gè)版本進(jìn)行Bug修復(fù)和一些優(yōu)化,同時(shí)也會(huì)包含一些創(chuàng)新贼涩,所以建議使用最新版本的jQuery來提高性能。不過需要注意和補(bǔ)充的是毒返,已建項(xiàng)目不要輕易的更換版本访敌,畢竟有時(shí)候新版本不完全是向后兼容的。

使用合適的選擇器

$("#id")

使用id定位DOM元素?zé)o疑是最佳性能的方式轰枝,因?yàn)閖Query底層將直接調(diào)用原生方法document.getElementById劫扒。其次,如果id不能直接定位到所需元素狸膏,可以考慮調(diào)用find()方法沟饥。

$("div")

標(biāo)簽選擇器性能也相對(duì)不錯(cuò),因?yàn)閖Query會(huì)直接調(diào)用原生方法document.getElementsByTagName來定位DOM元素,最好是配合$('#id')find()方法來使用。

$(".class")

使用class來定位元素集合相對(duì)會(huì)低效一些贤旷,因?yàn)樵诜乾F(xiàn)代瀏覽器上不支持document.getElementsByClassName()广料,只能通過DOM搜索的方式來實(shí)現(xiàn),所以最好也是配合$('#id')find()方法來使用

另外還有兩組選擇器分別是屬性選擇器$("[attribute=value]")和偽元素選擇器$(":hidden")幼驶,因單獨(dú)使用性能不理想艾杏,所以都建議使用ID選擇器定位到最近的父級(jí)元素并配合find()方法使用。

緩存對(duì)象

永遠(yuǎn)不要讓同一個(gè)選擇器出現(xiàn)多次

循環(huán)時(shí)的DOM操作

每1次操作DOM的性能開銷都很大盅藻,使用臨時(shí)變量來存儲(chǔ)购桑,將DOM的操作次數(shù)降至最低。

var top_100_list=['a','b''c','d','e'],
    listBox = $('#listBox'),
    top_100_li="";
for(var i=0,l=top_100_list.length;i<l;i++){
   top_100_li+="<li>"+top_100_list[i]+"</li>";
}
listBox.append(top_100_li);

數(shù)組方式使用jQuery對(duì)象

使用jQuery選擇器獲取結(jié)果是一個(gè)jQuery對(duì)象氏淑。然而勃蜘,jQuery會(huì)讓人感覺正在使用一個(gè)定義了索引和長(zhǎng)度的數(shù)組。在性能方面假残,建議使用原生的for()或者while()each()方法執(zhí)行更快缭贡。

事件委托

每一個(gè)JavaScript事件都會(huì)冒泡到父級(jí)節(jié)點(diǎn)。當(dāng)我們需要給多個(gè)元素調(diào)用同一個(gè)事件函數(shù)時(shí)候這一點(diǎn)會(huì)很有用辉懒。

比如我們要為一個(gè)表格綁定一個(gè)function阳惹,點(diǎn)擊td之后,將其背景設(shè)置為紅色眶俩。

第一反應(yīng)一般會(huì)這樣寫:

$('#myTable td').click(function(){
  $(this).css('background','red');
})

假如有100個(gè)td莹汤,那么就綁定了100次事件,顯然這將帶來很大的性能負(fù)擔(dān)颠印。

代替這種效率很差的多個(gè)元素事件監(jiān)聽的方法就是說体啰,只需要向它的父節(jié)點(diǎn)綁定1次事件,然后通過event.target來獲取到當(dāng)前點(diǎn)擊元素嗽仪。使用事件委托優(yōu)化之后:

$('#maTable').on('click','td',function(){
    $(this).css('background','red');
})

使用join()來拼接長(zhǎng)字符串

使用join來處理長(zhǎng)字符串(返回渲染DOM)拼接確實(shí)有助于性能優(yōu)化.

創(chuàng)建一個(gè)數(shù)組荒勇,然后循環(huán),使用join()把數(shù)組轉(zhuǎn)為字符串

var arr = [];

for (var i=0;i<=1000;i++){

arr[i] ='<li></li>';

}

$('#list').append(arr.join(""));

合理的利用Data自定義屬性

<!--Set-->
<div id="dl" data-role="page" data-last-value ="43" data-options='{"name":"jack"}'></div>
//Get
var dl = $('#dl');
dl.data("role");  //"page"
dl.data("lastValue");  //43
dl.data("options").name; //jack

盡量使用原生JavaScript方法

造自己的jQuery插件(輪子)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闻坚,一起剝皮案震驚了整個(gè)濱河市沽翔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窿凤,老刑警劉巖仅偎,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異雳殊,居然都是意外死亡橘沥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門夯秃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來座咆,“玉大人痢艺,你說我怎么就攤上這事〗樘眨” “怎么了堤舒?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)哺呜。 經(jīng)常有香客問我舌缤,道長(zhǎng),這世上最難降的妖魔是什么某残? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任国撵,我火速辦了婚禮,結(jié)果婚禮上玻墅,老公的妹妹穿的比我還像新娘介牙。我一直安慰自己,他們只是感情好椭豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旨指,像睡著了一般赏酥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆构,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天裸扶,我揣著相機(jī)與錄音,去河邊找鬼搬素。 笑死呵晨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬尺。 我是一名探鬼主播摸屠,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粱哼!你這毒婦竟也來了季二?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揭措,失蹤者是張志新(化名)和其女友劉穎胯舷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绊含,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桑嘶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躬充。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逃顶。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讨便,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出口蝠,到底是詐尸還是另有隱情器钟,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布妙蔗,位于F島的核電站傲霸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏眉反。R本人自食惡果不足惜昙啄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寸五。 院中可真熱鬧梳凛,春花似錦、人聲如沸梳杏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)十性。三九已至叛溢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劲适,已是汗流浹背楷掉。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霞势,地道東北人烹植。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愕贡,于是被迫代替她去往敵國(guó)和親草雕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    程序員poetry閱讀 16,643評(píng)論 18 503
  • 一固以、樣式篇 第1章 初識(shí)jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,380評(píng)論 0 44
  • 第一章 jQuery簡(jiǎn)介 1-1 jQuery簡(jiǎn)介 1.簡(jiǎn)介 2.優(yōu)勢(shì) 3.特性與工具方法 1-2 環(huán)境搭建 進(jìn)入...
    mo默22閱讀 1,583評(píng)論 0 11
  • 今天只有一句話促绵!我不服!為什么一逃課就點(diǎn)名W旆摹0芮纭!栽渴! 還有毛概<饫ぁ!O胁痢慢味!滿腦子都是河南老師的不中不中3“稹!纯路!
    Adore吳閱讀 113評(píng)論 0 0
  • 我登錄簡(jiǎn)書或油,是在很久之前,那時(shí)我的朋友也在簡(jiǎn)書寫作驰唬。來到此處只為的看她顶岸。而我真正的扎根卻是在23天前,那天我在簡(jiǎn)書...
    孟婆的碗不空閱讀 1,085評(píng)論 44 40