如何正確有效的學(xué)習(xí)jquery
眾所周知,jQuery現(xiàn)在已經(jīng)非常流行,百度新首頁中也已經(jīng)開始使用jQuery,所以學(xué)習(xí)它的人很多,為了幫助人更好的學(xué)習(xí)jquery,以下是學(xué)習(xí)啦小編分享給大家的有效的學(xué)習(xí)jquery的方法,希望可以幫到你!
有效的學(xué)習(xí)jquery的方法
1.正確引用jQuery
1.盡量在body結(jié)束前才引入jQuery,而不是在head中。
2.借助第三方提供的CDN來引入jQuery,同時(shí)注意當(dāng)使用第三方CDN出現(xiàn)問題時(shí),要引入本地的jQuery文件。(對于已經(jīng)使用了cdn的網(wǎng)站可以忽略,現(xiàn)在用戶帶寬都升級了,這個(gè)可以忽略了,放別人機(jī)器不一定穩(wěn)定)
3.如果在</body>前引入script文件的話,就不用寫document.ready了,因?yàn)檫@時(shí)執(zhí)行js代碼時(shí)DOM已經(jīng)加載完畢了。
<body>
<script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="jquery1.8.min.js">\x3C/script>')</script>
</body>
2.優(yōu)化jQuery選擇器
高效正確的使用jQuery選擇器是熟練使用jQuery的基礎(chǔ),而掌握jQuery選擇器需要一定的時(shí)間積累,我們開始學(xué)習(xí)jQuery時(shí)就應(yīng)該注意選擇器的使用。
<div id="nav" class="nav">
<a class="home" href="http://www.jb51.net">腳本之家</a>
<a class="articles" href="http://www.jb51.net/list/list_172_1.htm">jQuery教程</a>
</div>
如果我們選擇class為home的a元素時(shí),可以使用下邊代碼:
$('.home'); //1
$('#nav a.home'); //2
$('#nav').find('a.home'); //3
1.方法1會使jQuery在整個(gè)DOM中查找class為home的a元素,性能可想而知。
2.方法2為要查找的元素添加了上下文,在這里變?yōu)椴檎襥d為nav的子元素,查找性能得到了很大提升。
3.方法3使用了find方法,它的速度更快,所以方法三最好。
關(guān)于jQuery選擇器的性能優(yōu)先級,ID選擇器快于元素選擇器,元素選擇器快于class選擇器。因?yàn)镮D選擇器和元素選擇器是原生的JavaScript操作,而類選擇器不是,大家順便可以看下find context 區(qū)別,find() children區(qū)別。
3.緩存jQuery對象
緩存jQuery對象可以減少不必要的DOM查找,關(guān)于這點(diǎn)大家可以參考下緩存jQuery對象來提高性能。
4.正確使用事件委托
事件委托可以使事件更好的執(zhí)行,在動態(tài)添加的元素上綁定事件也需要委托來實(shí)現(xiàn),在新版本的jQuery中推薦大家使用on來給元素綁定一個(gè)或多個(gè)事件的處理函數(shù)。
<table id="t">
<tr>
<td>我是單元格</td>
</tr>
</table>
比如我們要在上邊的單元格上綁定一個(gè)單擊事件,不注意的朋友可能隨手寫成下邊的樣子:
$('#t').find('td').on('click', function () {
$(this).css({ 'color': 'red', 'background': 'yellow' });
});
這樣會為每個(gè)td綁上事件,在為100個(gè)單元格綁定click事件的測試中,兩者性能相差7倍之多,好的做法應(yīng)該是下邊寫法:
$('#t').on('click', 'td', function () {
$(this).css({ 'color': 'red', 'background': 'yellow' });
});
5.精簡jQuery代碼
如在上述代碼中我們對jQuery代碼進(jìn)行了適當(dāng)?shù)暮喜?,類似的還有.attr()方法等,我們沒有寫成下邊的方式:
$('#t').on('click', 'td', function () {
$(this).css('color', 'red').css('background', 'yellow');
});
6.減少DOM操作
剛開始使用jQuery時(shí)可能會頻繁的操作DOM,這是相當(dāng)耗費(fèi)性能的。如我們要在body中動態(tài)輸出一個(gè)表格,一些朋友會這樣寫:
var $t = $('body');
$t.append('<table>');
$t.append('<tr><td>1</td></tr>');
$t.append('</table>');
好的做法:
$('body').append('<table><tr><td>1</td></tr></table>');
這樣在拼接完table串后再添加到body中,對DOM的操作只需一次。群里以前有朋友就因?yàn)檫@個(gè)導(dǎo)致在IE下輸出時(shí)出現(xiàn)問題,而關(guān)于字符串的拼接可以參考下最快創(chuàng)建字符串的方法。
7.不使用jQuery
原生函數(shù)總是最快的,這點(diǎn)不難理解,在代碼書寫中我們不應(yīng)該忘記原生JS。
就先總結(jié)這幾條吧,每條建議并不難理解,但總結(jié)全面的話還是要花費(fèi)不少時(shí)間的。
有效的學(xué)習(xí)jquery的技巧
1關(guān)于頁面元素的引用
通過jquery的$引用元素包括通過id、class、元素名以及元素的層級關(guān)系及dom或者xpath條件等方法,且返回的對象為jquery對象(集合對象),不能直接調(diào)用dom定義的方法。
2jQuery對象與dom對象的轉(zhuǎn)換
只有jquery對象才能使用jquery定義的方法。注意dom對象和jquery對象是有區(qū)別的,調(diào)用方法時(shí)要注意操作的是dom對象還是jquery對象。普通的dom對象一般可以通過$轉(zhuǎn)換成jquery對象。
如:$(document.getElementById("msg"))則為jquery對象,可以使用jquery的方法。
由于jquery對象本身是一個(gè)集合。所以如果jquery對象要轉(zhuǎn)換為dom對象則必須取出其中的某一項(xiàng),一般可通過索引取出。
如:$("#msg")[0],$("div").eq(1)[0],$("div").get[1],$("td")[5]這些都是dom對象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下幾種寫法都是正確的:
$("#msg").html;
$("#msg")[0].innerHTML;
$("#msg").eq(0)[0].innerHTML;
$("#msg").get(0).innerHTML;
3如何獲取jQuery集合的某一項(xiàng)
對于獲取的元素集合,獲取其中的某一項(xiàng)(通過索引指定)可以使用eq或get(n)方法或者索引號獲取,要注意,eq返回的是jquery對象,而get(n)和索引返回的是dom元素對象。對于jquery對象只能使用jquery的方法,而dom對象只能使用dom的方法,如要獲取第三個(gè)
元素的內(nèi)容。
有如下兩種方法:
$("div").eq(2).html;//調(diào)用jquery對象的方法
$("div").get(2).innerHTML;//調(diào)用dom的方法屬性
4同一函數(shù)實(shí)現(xiàn)set和get
Jquery中的很多方法都是如此,主要包括如下幾個(gè):
$("#msg").html;//返回id為msg的元素節(jié)點(diǎn)的html內(nèi)容。
$("#msg").html("new content");
//將“new content” 作為html串寫入id為msg的元素節(jié)點(diǎn)內(nèi)容中,頁面顯示粗體的new content
$("#msg").text;//返回id為msg的元素節(jié)點(diǎn)的文本內(nèi)容。
$("#msg").text("newcontent");
//將“new content” 作為普通文本串寫入id為msg的元素節(jié)點(diǎn)內(nèi)容中,頁面顯示new content
$("#msg").height;//返回id為msg的元素的高度
$("#msg").height("300");//將id為msg的元素的高度設(shè)為300
$("#msg").width;//返回id為msg的元素的寬度
$("#msg").width("300");//將id為msg的元素的寬度設(shè)為300
$("input").val(");//返回表單輸入框的value值
$("input").val("test");//將表單輸入框的value值設(shè)為test
$("#msg").click;//觸發(fā)id為msg的元素的單擊事件
$("#msg").click(fn);//為id為msg的元素單擊事件添加函數(shù)
同樣blur,focus,select,submit事件都可以有著兩種調(diào)用方法
有效的學(xué)習(xí)jquery的書籍推薦
JavaScript: 語言精粹
JavaScript: 語言精粹 的作者是 Douglas Crockford,這是一本在 JavaScript 書籍歷史上具有開創(chuàng)性的,是每一位 JavaScript 編程者都需要閱讀的書。 Douglas Crockford 也是 JSON 和 JSLint 的作者,對 JavaScript 的發(fā)展做出了很多貢獻(xiàn)。
JavaScript: 語言精粹 專注于讓 JavaScript 成為最偉大的面向?qū)ο蟮恼Z言。涉及到函數(shù),對象,語法,聲明等。這些好的想法和糟糕的點(diǎn)子混在一起是不好,例如: 基于全局變量的編程模型。這本書向你展示了怎樣避開語言有缺陷的地方,利用該語言優(yōu)秀的地方寫出最好的代碼。
JavaScript: 語言精粹 向你展現(xiàn)了無論你以什么方式使用JavaScript這門語言,都可以寫出優(yōu)雅的代碼的方式。如果你開發(fā)一個(gè)網(wǎng)站或者 Web 應(yīng)用,這本書是必讀的。如果你需要寫出復(fù)雜的交互,做很多計(jì)算并且把JS視為一門面向?qū)ο蟮恼Z言的話,這本書更是你閱讀的首選。
你不知道的 JavaScript
你不知道的 JavaScript 的作者是 Kyle Simpson,這本書是關(guān)于 JavaScript 的系列書籍,其中將會展現(xiàn)一些你不知道 JavaScript 知識缺口,也會教您用來填補(bǔ)這些缺口的關(guān)于 JavaScript 一切您需要知道的知識。Kyle Simpson 是最好的 JavaScript 老師之一,任何一位認(rèn)真對待 JavaScript 的開發(fā)者都應(yīng)該關(guān)注 Kyle 的教學(xué)。
你不知道的 JavaScript 系列書籍著重處理 JavaScript 令人棘手的部分,幫助你成為一位真正的 JavaScript 大師。這系列書籍的知識點(diǎn)都很相似,并且涵蓋了那些平時(shí)不容易理解的話題。你不知道的 JavaScript 對每一水平的開發(fā)者都是適用的。書籍對每一個(gè)知識點(diǎn)都有具體的解釋,這是它最大的優(yōu)點(diǎn)。
你不知道的 JavaScript 系列書籍對所有的 JavaScript 開發(fā)者都是必讀書籍。書籍短小精悍,讓你能夠快速讀完,而不會顯得枯燥。這系列書籍是最建議閱讀的。
JavaScript: 權(quán)威指南
JavaScript: 權(quán)威指南 的作者是 David Flanagan,這是一本“名副其實(shí)”的書,絕對可以稱得上是最好的 javaScript 書籍之一。David Flanagan 在 Mozilla 工作,他將生命中很多時(shí)間都投注于編程相關(guān)書籍的寫作中。
JavaScript: 權(quán)威指南 分為兩個(gè)部分: 討論和參考。每個(gè)部分又包含核心章節(jié)和客戶端章節(jié)。核心章節(jié)涵蓋了語言的特點(diǎn),比如: 數(shù)據(jù)類型,函數(shù),類等??蛻舳苏鹿?jié)涵蓋了 JavaScript 在瀏覽器中的使用。JavaScript: 權(quán)威指南 基于作者的經(jīng)驗(yàn)提供了準(zhǔn)確的文檔。
JavaScript: 權(quán)威指南 有多個(gè)版本,每隔幾年就會更新一次,這是好的地方。這本書經(jīng)常改進(jìn),作者也參與到新版本的制定,包含一些其他 JavaScript 書籍缺少的東西。無論是哪個(gè)版本,這本書的核心都和 JavaScript 語言規(guī)范保持一致。
JavaScript: 權(quán)威指南 是一本關(guān)于 JavaScript 的權(quán)威性的指南,從每一個(gè)基本的語法開始到高級特性。JavaScript: 權(quán)威指南 屬于每個(gè)編程開發(fā)者的書架,強(qiáng)力推薦。
JavaScript 忍者秘籍
JavaScript 忍者秘籍 的作者是 John Resig, Bear Bibeault 和 Josip Maras ,是一本經(jīng)典作品,把你變成 JavaScript 的編程忍者高手。John Resig 是 jQuery 的作者,Bear Bibeault 是一位 web 開發(fā)者, Josip Maras 是一位博士后.
JavaScript 忍者秘籍 由四部分組成。每一個(gè)部分聚焦在幾個(gè)話題上,并且這些是相互關(guān)聯(lián)的,從基礎(chǔ)到高級。這些話題包括函數(shù),對象,原型,promise 等。 這本書有大量有用的的總結(jié)和練習(xí)。
JavaScript 忍者秘籍 用非常實(shí)際的例子清楚地解釋每個(gè)核心概念和技術(shù)。JavaScript 忍者秘籍 也包含了 API ,最佳實(shí)踐,跨瀏覽器測試等。
JavaScript 忍者秘籍 非常的巧妙, 并不令人驚奇,因?yàn)樽髡哂写罅康拈_發(fā)經(jīng)驗(yàn)。JavaScript 忍者秘籍 建議每一位想成為高手的開發(fā)者閱讀。
猜你喜歡:
2.如何系統(tǒng)游有效學(xué)習(xí)java基礎(chǔ)