摘要:原文地址這篇文章是各種方式的性能測(cè)試。但由于未能找問(wèn)明原因,所以作者就自己去做了這個(gè)測(cè)試。主要原因在于方法必須先保存元素的屬性,這樣才能把元素恢復(fù)到原來(lái)的狀態(tài)。根據(jù)源代碼上的注釋,這樣做是為了防止瀏覽器在每個(gè)循環(huán)上進(jìn)行重新渲染。
原文地址:http://www.php100.com/html/webkaifa/javascript/2012/0927/11164.html
這篇文章是jQuery各種show/hide方式的性能測(cè)試。作者之所以測(cè)試這個(gè)源于Robert Duffy在SanFrancisco舉行的jQuery大會(huì)上的一句話:“.hide()和.show()的執(zhí)行速度會(huì)比直接改變css慢”。但由于未能找RobertDuffy問(wèn)明原因,所以作者就自己去做了這個(gè)測(cè)試。下面的翻譯并不是全文翻譯,只節(jié)選了一些重點(diǎn)。
用作測(cè)試的是一個(gè)含有100個(gè)div的HTML頁(yè)面,div帶有class和一些內(nèi)容。為了排除掉尋找這些div所花費(fèi)的時(shí)間,所以把選擇器$("div")緩存起來(lái)了。用作測(cè)試的jQuery版本是1.4.2,所以測(cè)試結(jié)果也只是針對(duì)這個(gè)版本,在其他版本可能就不是這些結(jié)果了。
測(cè)試的jQuery方法分別是:
.toggle() .show() 和 .hide() .css({"display":"none"}) 和 .css({"display":"block"}) .addClass("hide") 和 .removeClass("hide")
改變
然后在javascript里:
1 $("#special_hide").attr("disabled, "true");
搞定!所有帶有"special_hide"這個(gè)class的元素都顯示出來(lái)了。要隱藏它們,你只需要……
1 $("#special_hide").attr("disabled", "false");
現(xiàn)在它們?nèi)慷茧[藏了。總的javascript耗時(shí)在所有瀏覽器上都是0-1ms。你的javascript只是用來(lái)改變一個(gè)屬性。當(dāng)然,瀏覽器還是需要花費(fèi)時(shí)間去重新渲染頁(yè)面的,但是實(shí)際上你已經(jīng)避免了javascript的處理時(shí)間。如果你調(diào)用了.toggle(),.hide()或者.css()這幾個(gè)方法,那么這個(gè)方法就會(huì)失效。因?yàn)槟菐讉€(gè)方法會(huì)通過(guò)內(nèi)聯(lián)方式設(shè)置css樣式,這些樣式有更高的優(yōu)先級(jí)。要重新使這個(gè)方法生效,只需調(diào)用.css("display", "")把內(nèi)聯(lián)的樣式移除掉。這個(gè)方法同樣需要花費(fèi)你更多的精力,因?yàn)槟切枰ザxclass,同時(shí)把這些class賦給頁(yè)面上需要進(jìn)行顯示/隱藏的元素,但是如果你所要處理的元素?cái)?shù)量是極其龐大的話,那么這也許是值得的。
簡(jiǎn)要回顧一下,下面是改變?cè)仫@示狀態(tài)的方法,按照最快到最慢的次序排列:
禁用/啟用樣式表 .css("display", ""), .css("display", "none") .addClass(), .removeClass() .show(), .hide() .toggle()
需要注意的是,在大多數(shù)的情況下,這些方法都足夠的快了。當(dāng)你要操作很大的jQuery集合時(shí),那么.show() 和.hide()方法在IE下就會(huì)變得很慢了,這是你可能要用addClass() 或者 .removeClass()方法。禁用/啟用樣式表的方法只有在很極端的情況下才有必要用到
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79808.html
摘要:參數(shù)代表回調(diào)函數(shù)。參數(shù)為變化樣式的對(duì)象必傳,速度可選,回調(diào)函數(shù)可選。這是,肯定會(huì)想到采用回調(diào)函數(shù)來(lái)解決。確實(shí)可以解決問(wèn)題,但是當(dāng)列隊(duì)動(dòng)畫(huà)變多時(shí),回調(diào)函數(shù)的可讀性大大降低確實(shí)一個(gè)非常煩人的問(wèn)題。提供了一個(gè)類(lèi)似于回調(diào)函數(shù)的方法。 jQuery-動(dòng)畫(huà)效果淺析 動(dòng)畫(huà)可以給網(wǎng)站的用戶體驗(yàn)加分,讓網(wǎng)頁(yè)更加活潑。不過(guò),什么東西都需要適量,簡(jiǎn)易快捷的動(dòng)畫(huà)會(huì)給網(wǎng)站加分不少。比如購(gòu)物網(wǎng)站的個(gè)人中心按鈕ho...
摘要:文件命名需要使用的庫(kù)該庫(kù)已經(jīng)兩年未更新了,不過(guò)依舊在回復(fù)中,對(duì)于庫(kù)的檢查,已經(jīng)完全測(cè)試通過(guò)一個(gè)栗子,日期選擇將為中的元素統(tǒng)統(tǒng)替換為日期選擇組件 使用jQuery處理事件 事件處理 一個(gè)栗子,單擊p時(shí)背景變成灰色 由于es6的箭頭函數(shù)不支持this的綁定,所以無(wú)法使用箭頭函數(shù),只能使用匿名函數(shù) html hello world js // 單擊...
摘要:我們快速地看一下擴(kuò)展原生的動(dòng)畫(huà)內(nèi)置的微模板國(guó)際化的支持?jǐn)U展有一個(gè)叫做事件的概念。內(nèi)置的微模板字符串冗長(zhǎng)而繁瑣。比如這段與對(duì)應(yīng)的微模板比較在中,任何接受的方法同樣接受表達(dá)式。 目前,jQuery是事實(shí)上的操作文檔對(duì)象模型(DOM)的庫(kù)。它可以與流行的客戶端MV*框架結(jié)合使用,并且擁有大量的插件與大型的社區(qū)。開(kāi)發(fā)者對(duì)于Javascript的興趣與日俱增的同時(shí),很多人開(kāi)始好奇,原生的API是...
摘要:為什么有一個(gè)東西,叫,它是一個(gè)快速輕量級(jí)跨平臺(tái)的框架。同時(shí),它也是這個(gè)世界上最輕量級(jí)的框架沒(méi)有之一它有多快如下我們?cè)诶镆氡壬厦娓斓姆椒ㄊ鞘裁礇](méi)有代碼是的,就是沒(méi)有代碼,因?yàn)閷?shí)在太強(qiáng)了,以至于所有的瀏覽器在年前內(nèi)置了它。 這里聲明一下,這不是反jQuery的文章,jQuery作為一個(gè)js庫(kù)給大家的項(xiàng)目開(kāi)發(fā)帶來(lái)很多便利,但有時(shí)候仔細(xì)想想,我們真的需要jQuery嗎?一年前的lpisme...
jQuery 是一個(gè)類(lèi)庫(kù),提供強(qiáng)大的選擇器,不用考慮兼容性問(wèn)題,進(jìn)行DOM操作,動(dòng)畫(huà)功能,以及Ajax jQuery 1點(diǎn)幾版本 兼容IE6~8 而2-3的版本不兼容 原生對(duì)象與jQuery對(duì)象的轉(zhuǎn)化 原生——>jq:oDiv——>$(oDiv) jq——>原生: $div1——>$div.get(0) 文檔就緒函數(shù)一般jq都寫(xiě)在文檔就緒函數(shù)里 $(document).ready(fu...
閱讀 2877·2021-10-14 09:43
閱讀 1670·2021-09-29 09:34
閱讀 1753·2021-07-28 00:16
閱讀 2968·2019-08-30 15:53
閱讀 2912·2019-08-30 13:59
閱讀 2969·2019-08-30 13:57
閱讀 1098·2019-08-26 13:38
閱讀 1898·2019-08-26 13:25