首先,在腦中牢牢記住jQuery就是javascript。這意味著我們應該採取相同的編碼慣例,風格指南和最佳實踐。
首先,如果你是一個javascript新手,我建議您閱讀 《給JavaScript初學者的24條最佳實踐》 ,這是一篇高質量的javascript教程,接觸jQuery之前最好先閱讀。
當你準備使用jQuery,我強烈建議你遵循下面這些指南:
1.快取變數
DOM遍歷是昂貴的,所以盡量將會重用的元素快取。
h = $('#element').height();
$('#element').css('height',h-20);
// 建議
$element = $('#element');
h = $element.height();
$element.css('height',h-20);
$element = $('#element');
h = $element.height();
$element.css('height',h-20);
// 建議
var $element = $('#element');
var h = $element.height();
$element.css('height',h-20);
var first = $('#first');
var second = $('#second');
var value = $first.val();
// 建議 - 在jQuery物件前加$前綴
var $first = $('#first');
var $second = $('#second'),
var value = $first.val();
$first.click(function(){
$first.css('border','1px solid red');
$first.css('color','blue');
$first.hover(function(){
$first.css('border','1px solid red');
// 建議
$first.on('click',function(){
$first.css('border','1px solid red');
$first.s(' color','blue');
$first.on('hover',function(){
$first.css('border','1px solid red');
$first.click(function(){
$first.css('border','1px solid red');
$first.css('color','blue');
// 建議
$first.on('click',function(){
$first.css({
'border':'1px solid red', });
});
$second.html(value);
$second.on('click',function(){
alert('hello everybody');
});
$second. fadeIn('slow');
$second.animate({height:'120px'},500);
// 建議
$second.html(value);
$second.on('click',function(){
alert('hello everybody');
}).fadeIn('slow') .animate({height:'120px'},500);
$second.html(value);
$second.on('click',function(){
alert('hello everybody');
}).fadeIn('slow') .animate({height:'120px'},500);
// 建議
$second.html(value);
$second
.on('click',function(){ alert('hello everybody');})
.fadeIn('slowfadeIn('slow')
.animate({height:'120px'},500);
function initVar($myVar) {
if(!$myVar) {
$myVar = $('#selector');// 建議
$myVar = $myVar || $('#selector');
}
10.選擇捷徑
精簡程式碼種方式是利用編碼捷徑。
if(collection.length){..}11.繁重的操作中分離元素
如果你打算對DOM元素做大量操作(連續設定多個屬性或css樣式),建議先分離元素然後在添加。
$element = null;
$element = $containerLi.first();
//... 許多複雜的操作
// better
$container = $("#container"),
$containerLi = $container.find("li"), $element = null;
$element = null;
$element = $containerLi.first().detach();
$container.append($element);
12.熟記技巧
// 建議 (高效率)
$.data('#id',key,value);
13.使用子查詢快取的父元素
$containerLi = $('#container li'),
$containerLiSpan = $("#conStainer
// 建議 (高效率)
var
$container = $('#container '), $containerLi = $container.find('li'),
$containerLiS.
14.避免通用選擇符
$('.container > *');
// 建議
$('.container').children();
避免隱式通用選擇符
通用選擇符有時是隱式的,不容易發現。
// 糟糕
$('.someclass :radio');
// 建議
$('.someclass input:radio');
最佳化選擇符
例如,Id選擇符應該是唯一的,所以沒有必要添加額外的選擇符。
// 糟糕
$('div#myid');
$('div#footer a.myLink');
// 建議
$('#myid');
$('#footer .myLink');
$('#outer #inner');
// 建議
$('#inner');
摒棄棄用方法
專注於每個新版本的廢棄方法是非常重要的並儘量避免使用這些方法。
// 很糟糕 - live 已經廢棄
console.log('hooray');
});
// 建議
17.利用CDN
Google的CND能保證選擇離用戶最近的快取並迅速回應。 (使用GoogleCND請自行搜尋地址,此處地址不能使用,推薦jquery官網提供的CDN)。
18.必要時組合jQuery和javascript原生程式碼
如上所述,jQuery就是javascript,這表示用jQuery能做的事情,同樣可以用原生程式碼來做。原生程式碼(或 vanilla)的可讀性和可維護性可能不如jQuery,而且程式碼更長。但也意味著更有效率(通常更接近底層程式碼可讀性越差,效能越高,例如:彙編,當然需要更強大的人才可以)。牢記沒有任何框架能比原生程式碼更小,更輕,更有效率
鑑於vanilla 和 jQuery之間的效能差異,我強烈建議吸收兩人的精華,使用(可能的話)和jQuery等價的原生程式碼。