中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

網(wǎng)站建設(shè)之15個(gè)值得開(kāi)發(fā)人員關(guān)注的jQuery開(kāi)發(fā)技巧和心得

2022-07-21    分類(lèi): 網(wǎng)站建設(shè)

網(wǎng)站建設(shè)之15個(gè)值得開(kāi)發(fā)人員關(guān)注的jQuery開(kāi)發(fā)技巧和心得

標(biāo)簽:成都精典網(wǎng)站制作

在這篇文章中,我們將介紹15個(gè)讓你的jQuery更加有效的技巧,大部分關(guān)于性能提升的,希望大家能夠喜歡!

1. 盡量使用最新版本的jQuery類(lèi)庫(kù)

jQuery項(xiàng)目中使用了大量的創(chuàng)新。最好的方法來(lái)提高性能就是使用最新版本的jQuery。每一個(gè)新的版本都包含了優(yōu)化的bug修復(fù)。對(duì)我們來(lái)說(shuō)要干的就是修改tag,何樂(lè)而不為呢?

我們也可以使用免費(fèi)的CDN服務(wù),例如, Google來(lái)存放jQuery類(lèi)庫(kù)。

2. 使用簡(jiǎn)單的選擇器

直 到最近,返回DOM元素的方式都是解析選擇器字符串,javascript循環(huán)和內(nèi)建的javascript API例如,getElementbyId(),getElementsByTagName(),getElementsByClassName()三種 方式的整合使用。但是現(xiàn)代瀏覽器都開(kāi)始支持querySelectorAll(),這個(gè)方法能夠理解CSS查詢器,而且能帶來(lái)顯著的性能提升。

然而,我們應(yīng)該避免使用復(fù)雜的選擇器返回元素。更不用說(shuō)很多用戶使用老版本的瀏覽器,強(qiáng)迫jQuery去處理DOM樹(shù)。這個(gè)方式非常慢。

$('li[data-selected="true"] a') // Fancy, but slow $('li.selected a') // Better $('#elem') // Best

選擇id是最快速的方式。如果你需要使用class名稱(chēng), 那么你最好帶上tag名稱(chēng),這樣會(huì)更快些。特別是在老瀏覽器和移動(dòng)設(shè)備上。

訪問(wèn)DOM是javascript應(yīng)用最慢的方式 ,因此盡量少使用。使用變量去保存選擇器,這樣會(huì)使用cache來(lái)保存。性能更好。

var buttons = $('#navigation a.button'); // Some prefer prefixing their jQuery variables with $: var $buttons = $('#navigation a.button');

另 外一個(gè)值得做的是jQuery給了你很多的額外便利選擇器 ,例如,:visible,:hidden,:animated還有其它,這些不是合法的CSS3選擇器。結(jié)果是你使用這些類(lèi)庫(kù)就不能有效地利用 querySelectorAll()方法。為了彌補(bǔ)這個(gè)問(wèn)題,你需要先選擇元素,再過(guò)濾,如下:

$('a.button:animated'); // Does not use querySelectorAll() $('a.button').filter(':animated'); // Uses it3. 數(shù)組方式使用jQuery對(duì)象

運(yùn)行選擇器的結(jié)果是一個(gè)jQuery對(duì)象。然而,jQuery類(lèi)庫(kù)讓你感覺(jué)你正在使用一個(gè)定義了index和長(zhǎng)度的數(shù)組。

// Selecting all the navigation buttons:var buttons = $('#navigation a.button');// We can loop though the collection:for(var i=0;i

如果性能是你關(guān)注的,那么使用簡(jiǎn)單for或者while循環(huán)來(lái)處理,而不是$.each(),這樣能使你的代碼更快。

檢查長(zhǎng)度也是一個(gè)檢查你的collection是否含有元素的方式。

if(buttons){ // This is always true // Do something}if(buttons.length){ // True only if buttons contains elements // Do something}4. 選擇器屬性

jQuery提供了一個(gè)屬性,這個(gè)屬性顯示了用來(lái)做鏈?zhǔn)降倪x擇器。

$('#container li:first-child').selector // #container li:first-child$('#container li').filter(':first-child').selector // #container li.filter(:first-child)

雖然上面的例子針對(duì)同樣的元素,選擇器則完全不一樣。第二個(gè)實(shí)際上是非法的,你不可以使用它來(lái)創(chuàng)建一個(gè)對(duì)象。只能用來(lái)顯示filter方法是用來(lái)縮小collection。

5. 創(chuàng)建一個(gè)空的jQuery對(duì)象

創(chuàng)建一個(gè)新的jQuery空間能極大的減小開(kāi)銷(xiāo)。有時(shí)候,你可能需要?jiǎng)?chuàng)建一個(gè)空的對(duì)象,然后使用add()方法添加對(duì)象。

var container = $([]); container.add(another_element);

這也是quickEach方法的基礎(chǔ),你可以使用這種更快的方式而非each()。

6. 選擇一個(gè)隨機(jī)元素

上面我提到過(guò),jQuery添加它自己的選擇器過(guò)濾。除了類(lèi)庫(kù),你可以添加自己的過(guò)濾器。只需要添加一個(gè)新的方法到$.expr[':']對(duì)象。一個(gè)非常棒的使用方式是Waldek Mastykarz的博客中提到的:創(chuàng)建一個(gè)用來(lái)返回隨機(jī)元素的選擇器。你可以修改下面代碼:

(function($){ var random = 0; $.expr[':'].random = function(a, i, m, r) { if (i == 0) { random = Math.floor(Math.random() * r.length); } return i == random; };})(jQuery);// This is how you use it:$('li:random').addClass('glow');7. 使用CSS Hooks

CSS hooks API是提供開(kāi)發(fā)人員得到和設(shè)置特定的CSS數(shù)值的方法。使用它,你可以隱藏瀏覽器特定的執(zhí)行并且使用一個(gè)統(tǒng)一的界面來(lái)存取特定的屬性。、

$.cssHooks['borderRadius'] = { get: function(elem, computed, extra){ // Depending on the browser, read the value of // -moz-border-radius, -webkit-border-radius or border-radius }, set: function(elem, value){ // Set the appropriate CSS3 property }};// Use it without worrying which property the browser actually understands:$('#rect').css('borderRadius',5);

更好的在于,人們已經(jīng)創(chuàng)建了一個(gè)支持CSS hooks類(lèi)庫(kù)

8. 使用自定義的刪除方法

你可能聽(tīng)到過(guò)jQuery的刪除插件,它能夠允許你給你的動(dòng)畫(huà)添加特效。的缺點(diǎn)是你的訪問(wèn)者需要加載另外一個(gè)javascript文件。幸運(yùn)的是,你可以簡(jiǎn)單的從插件拷貝效果,并且添加到j(luò)Query.easing對(duì)象中,如下:

$.easing.easeInOutQuad = function (x, t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t + b; return -c/2 * ((--t)*(t-2) - 1) + b;};// To use it:$('#elem').animate({width:200},'slow','easeInOutQuad');9. $.proxy()

使用callback方法的缺點(diǎn)之一是當(dāng)執(zhí)行類(lèi)庫(kù)中的方法后,context被設(shè)置到另外一個(gè)元素,例如:

 
Close

本文題目:網(wǎng)站建設(shè)之15個(gè)值得開(kāi)發(fā)人員關(guān)注的jQuery開(kāi)發(fā)技巧和心得
文章分享:http://www.rwnh.cn/news2/181302.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站制作、建站公司、品牌網(wǎng)站制作、網(wǎng)站營(yíng)銷(xiāo)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
临漳县| 芜湖县| 铜鼓县| 南城县| 舒城县| 桦甸市| 中山市| 广安市| 东方市| 神池县| 石渠县| 伊吾县| 那坡县| 曲周县| 广宗县| 兴隆县| 林州市| 洛隆县| 安溪县| 汨罗市| 会泽县| 定西市| 霍州市| 阳城县| 府谷县| 永定县| 年辖:市辖区| 三亚市| 天津市| 嘉定区| 霍邱县| 阿鲁科尔沁旗| 荣成市| 年辖:市辖区| 霍邱县| 榆林市| 新平| 秀山| 玛曲县| 阿荣旗| 家居|