まず、jQuery は JavaScript であることを覚えておいてください。これは、同じコーディング規約、スタイルガイド、ベストプラクティスを採用する必要があることを意味します。
まず、JavaScript の初心者の方は、「JavaScript 初心者のための 24 のベスト プラクティス」を読むことをお勧めします。これは、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 = $('#first');
var value = $first.val();
// 提案 - jQuery オブジェクトの先頭に $
を付けますvar $first = $('#first');
var $second = $('#first'),
var value = $first.val();
$first.click(function(){
$first.css('border','1px 単色赤');
$first.css('color','blue');
});
$first.hover(function(){
$first.css('border','1px 単色赤');
})
// 推奨事項
$first.on('click',function(){
$first.css('border','1px 単色赤');
$first.css(' color','blue');
})
$first.on('hover',function(){
$first.css('border','1px 単色赤');
})
$first.click(function(){
$first.css('border','1px 単色赤');
$first.css('color','blue');
});
// 提案
$first.on('click',function(){
$first.css({
'border':'1px 単色赤',
'color':'blue'
});
});
$秒.html(値);
$秒.on('クリック',function(){
アラート('皆さんこんにちは');
});
$秒。 fadeIn('slow');
$sec.animate({height:'120px'},500);
// 提案
$秒.html(値);
$秒.on('クリック',function(){
アラート('皆さんこんにちは');
}).fadeIn('遅い') .animate({height:'120px'},500);
$秒.html(値);
$秒.on('クリック',function(){
アラート('皆さんこんにちは');
}).fadeIn('遅い') .animate({height:'120px'},500);
// 提案
$秒.html(値);
$秒
.on('click',function(){alert('こんにちは');})
.fadeIn('slow')
.animate({height:'120px'},500);
function initVar($myVar) {
if(!$myVar) {
$myVar = $('#selector');
}
}
// 提案
function initVar($myVar) {
$myVar = $myVar || $('#selector');
}
if(collection.length > 0){..}
// 提案
if(collection.length){..}
var
$container = $("#container"),
$containerLi = $("#container li"),
$element = null;
$element = $containerLi.first();
//... 多くの複雑な操作
// より良い
var
$container = $("#container"),
$containerLi = $container.find("li"),
$element = null;
$element = $containerLi.first().detach();
//... 多くの複雑な操作
$container.append($element);
$('#id').data(key,value);
// 提案 (効率的)
$.data('#id',key,value);
var
$container = $('#container'),
$containerLi = $('#container li'),
$containerLiSpan = $('#container li span');
// 提案 (効率的)
var
$container = $('#container '),
$containerLi = $container.find('li'),
$containerLiSpan= $containerLi.find('span');
$('.container > *');
// 提案$('.container').children();
暗黙的なユニバーサル セレクターを避ける
ユニバーサル セレクターは暗黙的であり、見つけるのが難しい場合があります。
$('.someclass :radio');
// 提案
$('.someclass input:radio');
セレクターの最適化たとえば、Id セレクターは一意である必要があるため、セレクターを追加する必要はありません。
// おっと
$('div#myid');
$('div#footer a.myLink');
// 推奨事項
$('#footer .myLink');
15. 複数の ID セレクターを避ける
$('#inner'); 16. 最新バージョンを使用する
通常、新しいバージョンの方が優れており、より軽量で効率的です。明らかに、サポートしたいコードの互換性を考慮する必要があります。たとえば、バージョン 2.0 は IE 6/7/8 をサポートしません。
// 提案
$('#stuff').on('click', function() {
});
// 注: これは不適切な可能性があります。Live ではリアルタイム バインディングを実現できるため、デリゲートの方が適切である可能性があります。
17. CDN を使用する
バニラと jQuery のパフォーマンスの違いを考慮して、両方の長所を吸収し、(可能であれば) jQuery と同等のネイティブ コードを使用することを強くお勧めします。
最後に、この記事を記録する目的は、jQuery のパフォーマンスを向上させることと、その他の優れた提案を行うことです。このトピックをさらに深く掘り下げたい場合は、非常に楽しいことがわかります。 jQuery は必須ではなく、単なるオプションであることに注意してください。なぜそれを使いたいのか考えてみましょう。 DOM操作?アヤックス?ステンシル? CSSアニメーション?それともセレクターエンジン?おそらく、JavaScript マイクロフレームワークまたは jQuery のカスタマイズされたバージョンの方が良い選択でしょう。