Jquery を最適化し、Web ページの読み込み速度を向上させる_jquery
jquery
負荷
常に ID セレクターから継承
クラスの前にタグを使用
jquery オブジェクトをキャッシュ
強力なチェーン操作をマスター
サブクエリを使用
直接 DOM 操作の場合 制限
バブリング
排除無効なクエリ
$(window).load に遅延
js を圧縮
jquery ライブラリを完全に習得
1. 常に ID セレクター
から継承します。jquery で最も速いセレクターは ID セレクターです。これは Javascript の getElementById() メソッドから直接取得されるためです。
コードをコピーしますコードは次のとおりです。
このようにボタンを選択します非効率的です:
var Traffic_button = $('#content .button');
ID:
var Traffic_button = $('#traffic_button');
複数の要素を選択
複数要素の選択についての言及は、実際には DOM のトラバーサルとループに関するものであり、パフォーマンスを向上させるには、最も近い ID から継承するのが最善です。
var Traffic_lights = $('#traffic_light input');
2. クラスの前にタグ
を使用します2 番目に速いセレクターはタグ セレクター ($('head')) です。これはネイティブの getElementsByTagName() メソッドからのものであるためです。
code コードは次のとおりです:
常にタグ名を使用してクラスを制限 (変更) します (最も近い ID を忘れないでください):
var active_light = $('#traffic_light input.on');
注: クラスは jquery で最も遅いセレクターであり、IE ブラウザーでは、使用される場所に関係なくすべての DOM ノードを走査します。
タグ名で ID を変更しないでください。次の例では、すべての div 要素を走査して、ID が「content」のノードを検索します。
var content = $('div#content'); ID による ID の変更は不要です:
var Traffic_light = $('#content #traffic_light');
3. jquery オブジェクトをキャッシュする
jquery オブジェクトを変数にキャッシュする習慣を身につけます。
これは絶対に行わないでください:
コードをコピーします コードは次のとおりです:
$ ('# Traffic_light input.on).bind('click', function(){…});
$('#traffic_light input.on).css('border', '3px 破線の黄色');
$ ('#traffic_light input.on).css('background-color', 'orange');
$('#traffic_light input.on).fadeIn('slow'); >
まずオブジェクトを変数にキャッシュしてから操作するのが最善です:
コードをコピーします コードは次のとおりです
var $active_light = $('#traffic_light input.on');$active_light.bind('click', function(){…});
$ active_light.css('border', ' 3 ピクセルの破線の黄色');
$active_light.css('background-color', 'orange');
$active_light.fadeIn('slow');
ローカル変数が jquery のパッケージであることを忘れないように、通常は変数の接頭辞として $ を使用します。コード内に同じセレクターを複数回出現させないでください。
// グローバル スコープでオブジェクトを定義します (例: window オブジェクト)
window.$my =
{
// 可能性のあるすべてのクエリを初期化します。複数回使用される
head : $('head'),
traffic_light : $('#traffic_light'),
traffic_button : $('#traffic_button')
};
function do_something()
{
// 保存された結果を参照して操作できるようになりました
var script = document.createElement('script');
$my.head.append(script) ;
/ / 関数内で操作する場合、クエリをグローバル オブジェクトに引き続き保存できます。
$my.cool_results = $('#some_ul li');
$my.other_results = $('#some_table td');
// グローバル関数を通常の jquery オブジェクトとして使用します。
$my.other_results.css('border-color', 'red');
$my .traffic_light.css('border-color', 'green');
}
4. 強力なチェーン操作をマスターする
var $active_light = $('#traffic_light input.on');$active_light.bind('click', function(){…})
.css('border', '黄色の 3 ピクセルの破線')
. css('background-color', 'orange')
.fadeIn('slow');
これにより、記述するコードが減り、より多くの JS を作成できるようになります。軽量。
div>
たとえば、サブクエリ メソッドを使用してオンまたはオフのライトをキャプチャし、後続の操作のためにキャッシュすることができます。
$ active_light.css('border', ' 3 ピクセルの破線の黄色');
$active_light.css('background-color', 'orange');
$active_light.fadeIn('slow');
ローカル変数が jquery のパッケージであることを忘れないように、通常は変数の接頭辞として $ を使用します。コード内に同じセレクターを複数回出現させないでください。
後で使用できるように jquery 結果をキャッシュします
プログラムの他の部分で jquery 結果オブジェクトを使用する予定がある場合、または関数が複数回実行される場合は、それらをグローバル変数にキャッシュします。
jquery の結果を保存するグローバル コンテナを定義します。他の関数で参照できます:
コードをコピーします コードは次のとおりです。次のように:
// グローバル スコープでオブジェクトを定義します (例: window オブジェクト)
window.$my =
{
// 可能性のあるすべてのクエリを初期化します。複数回使用される
head : $('head'),
traffic_light : $('#traffic_light'),
traffic_button : $('#traffic_button')
};
function do_something()
{
// 保存された結果を参照して操作できるようになりました
var script = document.createElement('script');
$my.head.append(script) ;
/ / 関数内で操作する場合、クエリをグローバル オブジェクトに引き続き保存できます。
$my.cool_results = $('#some_ul li');
$my.other_results = $('#some_table td');
// グローバル関数を通常の jquery オブジェクトとして使用します。
$my.other_results.css('border-color', 'red');
$my .traffic_light.css('border-color', 'green');
}
4. 強力なチェーン操作をマスターする
上記の例は次のように書くこともできます:
コードをコピーしますコードは次のとおりです:
var $active_light = $('#traffic_light input.on');$active_light.bind('click', function(){…})
.css('border', '黄色の 3 ピクセルの破線')
. css('background-color', 'orange')
.fadeIn('slow');
これにより、記述するコードが減り、より多くの JS を作成できるようになります。軽量。
5. サブクエリ
を使用します。jQuery を使用すると、ラップされたオブジェクトに対して追加のセレクター操作を使用できるようになります。親オブジェクトを変数に保存したため、その子要素に対する操作が大幅に改善されました:
コードをコピー コードは次のとおりです:
div>
コードをコピー コードは次のとおりです。
var $traffic_light = $('#traffic_light'),
$active_light = $traffic_light.find( 'input. on'),
$inactive_lights = $traffic_light.find('input.off');
ヒント: カンマ区切りのメソッドを使用して一度に複数のローカル変数を宣言できます – バイト数の節約 $active_light = $traffic_light.find( 'input. on'),
$inactive_lights = $traffic_light.find('input.off');
6. 直接 DOM 操作を制限する
ここでの基本的な考え方は、実際に必要なものをメモリ内に構築してから DOM を更新することです。これは実際には jQuery のベスト プラクティスではありませんが、有効な JavaScript の直接操作には必要です。たとえば、リスト要素のセットを動的に作成したい場合は、次のことは絶対に行わないでください:
コードをコピーコードは次のとおりです。
var top_100_list = [...], // ここに 100 個の一意の文字列があると仮定します。
$mylist = $('#mylist') // jQuery selects < ; ul> 要素
for (var i=0, l=top_100_list.length; i{
$mylist.append('' top_100_list[i] '< ; /li>');
}
DOM に要素文字列を挿入する前に、要素文字列のセット全体を作成する必要があります:
var top_100_list = [...],
$mylist = $('#mylist'),
top_100_li = ""; // この変数は次の目的で使用されます。リスト Element
for (var i=0, l=top_100_list.length; i{
}
$mylist.html(top_100_li);
挿入する前に複数の要素を単一の親ノードにラップすると高速になります:
var top_100_list = [...],
$mylist = $(' #mylist'),
top_100_ul = '
$ mylist.replaceWith(top_100_ul);
上記の作業を行ってもパフォーマンスの問題がまだ心配な場合は、次のことを行ってください。
$mylist = $('#mylist') // jQuery selects < ; ul> 要素
for (var i=0, l=top_100_list.length; i
$mylist.append('
}
DOM に要素文字列を挿入する前に、要素文字列のセット全体を作成する必要があります:
コードをコピーします コードは次のとおりです。
var top_100_list = [...],
$mylist = $('#mylist'),
top_100_li = ""; // この変数は次の目的で使用されます。リスト Element
for (var i=0, l=top_100_list.length; i
}
$mylist.html(top_100_li);
挿入する前に複数の要素を単一の親ノードにラップすると高速になります:
コードをコピー コードは次のとおりです:
var top_100_list = [...],
$mylist = $(' #mylist'),
top_100_ul = '
- ';
- ' ';
for (var i=0, l=top_100_list.length; i
top_100_ul = '
}
top_100_ul = '
$ mylist.replaceWith(top_100_ul);
上記の作業を行ってもパフォーマンスの問題がまだ心配な場合は、次のことを行ってください。
jquery の clone() メソッドを試してみると、ノード ツリーのコピーが作成され、「オフライン」方法で DOM 操作を実行できるようになり、操作が完了したらノード ツリーに戻すことができます。
DOM DocumentFragments を使用します。jQuery の作成者が述べたように、そのパフォーマンスは直接 dom 操作よりも大幅に優れています。
7. バブリング
特別な状況を除いて、すべての JS イベント (クリック、マウスオーバーなど) は親ノードにバブルアップします。これは、複数の要素で同じ関数を呼び出す必要がある場合に便利です。
この非効率的な複数要素のイベント リスニングの代わりに、親ノードに 1 回バインドするだけで、どのノードがイベントをトリガーしたかを計算できるようになります。たとえば、この動作を多くの入力ボックスのあるフォームにバインドしたいとします。選択された入力ボックスにクラスを追加します
このようなイベントのバインドは非効率です:
コードをコピー コードは次のとおりです:
$('#entryform input).bind('focus', function(){
$(this).addClass('selected');
}).bind('blur', function(){
$(this).removeClass('selected');
});
親レベルでフォーカスの取得と喪失のイベントをリッスンする必要があります。 >$(this).addClass('selected');
}).bind('blur', function(){
$(this).removeClass('selected');
});
コードをコピー コードは次のとおりです:
$('#entryform').bind(' focus', function(e) { var cell = $(e.target) // e.target はイベントをトリガーしたノードを取得します。
cell.addClass('selected');
} ).bind('blur' , function(e){
var cell = $(e.target);
cell.removeClass('selected');
});
親要素はディスパッチャーの役割を果たし、ターゲット要素に基づいてイベントをバインドできます。同じイベント リスナーを多くの要素にバインドしていることが判明した場合は、何か間違ったことをしたはずです。
cell.addClass('selected');
} ).bind('blur' , function(e){
var cell = $(e.target);
cell.removeClass('selected');
});
親要素はディスパッチャーの役割を果たし、ターゲット要素に基づいてイベントをバインドできます。同じイベント リスナーを多くの要素にバインドしていることが判明した場合は、何か間違ったことをしたはずです。
8. 無効なクエリを削除します
jquery は一致する要素がない状況を非常にエレガントに処理できますが、サイト全体に 1 つのグローバル js しかない場合、すべての jquery 関数が $( に詰め込まれる可能性が非常に高くなります。 document)ready (function(){//あなたが誇るすべてのコード}).
ページ内で使用される関数のみを実行します。最も効果的な方法は、テンプレートが js をいつどこで実行するかを正確に制御できるように、インライン初期化関数を使用することです。
たとえば、「記事」ページ テンプレートでは、本文の最後に次のコードを引用できます。
グローバル js ライブラリは次のようになります:
var mylib =
{
article_page :
{
init : function()
{
// 記事固有の jQuery 関数。
}
} ,
Traffic_light :
{
init : function()
{
// 信号機の独自の jQuery 関数。
}
}
}
9. $(window).load に従う
Jquery には、開発者にとって非常に魅力的な機能があり、$(document).ready の下に何でもぶら下げてイベントのふりをすることができます。$(document).radiy は確かに非常に便利ですが、他の要素がダウンロードされる前にページがレンダリングされるときに実行される可能性があります。ページが常に読み込まれている場合、それはおそらく $( document).ready です。関数。
jquery 関数を $(window).load イベントにバインドすることで、ページの読み込み時の CPU 使用率を削減できます。この関数は、すべての HTML (
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前
By DDD
Windows11 KB5054979の新しいものと更新の問題を修正する方法
2週間前
By DDD
Atomfallのクレーンコントロールキーカードを見つける場所
3週間前
By DDD
アサシンクリードシャドウ - 鍛冶屋を見つけて武器と鎧のカスタマイズを解除する方法
1 か月前
By DDD
<🎜>:Dead Rails-すべての課題を完了する方法
3週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7622
15


CakePHP チュートリアル
1389
52


Steamのアカウント名の形式は何ですか
89
11


NYTの接続はヒントと回答です
31
138



jQuery 参照方法の詳細説明: クイック スタート ガイド jQuery は、Web サイト開発で広く使用されている人気のある JavaScript ライブラリであり、JavaScript プログラミングを簡素化し、開発者に豊富な機能を提供します。この記事では、jQuery の参照方法を詳しく紹介し、読者がすぐに使い始めるのに役立つ具体的なコード例を示します。 jQuery の導入 まず、HTML ファイルに jQuery ライブラリを導入する必要があります。 CDN リンクを通じて導入することも、ダウンロードすることもできます

jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? jQuery で PUT リクエストを送信する方法は、他のタイプのリクエストを送信する方法と似ていますが、いくつかの詳細とパラメータ設定に注意する必要があります。 PUT リクエストは通常、データベース内のデータの更新やサーバー上のファイルの更新など、リソースを更新するために使用されます。以下は、jQuery の PUT リクエスト メソッドを使用した具体的なコード例です。まず、jQuery ライブラリ ファイルが含まれていることを確認してから、$.ajax({u

jQueryで要素の高さ属性を削除するにはどうすればよいですか?フロントエンド開発では、要素の高さ属性を操作する必要が生じることがよくあります。要素の高さを動的に変更する必要がある場合や、要素の高さ属性を削除する必要がある場合があります。この記事では、jQuery を使用して要素の高さ属性を削除する方法と、具体的なコード例を紹介します。 jQuery を使用して高さ属性を操作する前に、まず CSS の高さ属性を理解する必要があります。 height 属性は要素の高さを設定するために使用されます

タイトル: jQuery ヒント: ページ上のすべての a タグのテキストをすばやく変更する Web 開発では、ページ上の要素を変更したり操作したりする必要がよくあります。 jQuery を使用する場合、ページ内のすべての a タグのテキスト コンテンツを一度に変更する必要がある場合があります。これにより、時間と労力を節約できます。以下では、jQuery を使用してページ上のすべての a タグのテキストをすばやく変更する方法と、具体的なコード例を紹介します。まず、jQuery ライブラリ ファイルを導入し、次のコードがページに導入されていることを確認する必要があります: <

タイトル: jQuery を使用して、すべての a タグのテキスト コンテンツを変更します。 jQuery は、DOM 操作を処理するために広く使用されている人気のある JavaScript ライブラリです。 Web 開発では、ページ上のリンク タグ (タグ) のテキスト コンテンツを変更する必要が生じることがよくあります。この記事では、この目標を達成するために jQuery を使用する方法を説明し、具体的なコード例を示します。まず、jQuery ライブラリをページに導入する必要があります。 HTML ファイルに次のコードを追加します。

jQuery は、Web ページでの DOM 操作やイベント処理を処理するために広く使用されている人気のある JavaScript ライブラリです。 jQueryではeq()メソッドを利用して指定したインデックス位置の要素を選択しますが、具体的な使い方と応用シーンは以下の通りです。 jQuery では、 eq() メソッドは、指定されたインデックス位置にある要素を選択します。インデックス位置は 0 からカウントされます。つまり、最初の要素のインデックスは 0、2 番目の要素のインデックスは 1 などとなります。 eq() メソッドの構文は次のとおりです。 $("s

jQuery 要素に特定の属性があるかどうかを確認するにはどうすればよいですか? jQuery を使用して DOM 要素を操作する場合、要素に特定の属性があるかどうかを判断する必要がある状況がよく発生します。この場合、jQuery が提供するメソッドを使用してこの関数を簡単に実装できます。以下では、jQuery 要素が特定の属性を持つかどうかを判断するために一般的に使用される 2 つの方法を紹介し、具体的なコード例を添付します。方法 1: attr() メソッドと typeof 演算子 // を使用して、要素に特定の属性があるかどうかを判断します

jQuery は、Web 開発で広く使用されている人気の JavaScript ライブラリです。 Web 開発中は、JavaScript を使用してテーブルに新しい行を動的に追加することが必要になることがよくあります。この記事では、jQuery を使用してテーブルに新しい行を追加する方法を紹介し、具体的なコード例を示します。まず、jQuery ライブラリを HTML ページに導入する必要があります。 jQuery ライブラリは、次のコードを通じてタグに導入できます。
