jQueryコヌドを改善する25のヒント

これはJon Hobbs-Smithによっお曞かれた蚘事の翻蚳です。 jQueryラむブラリヌに興味があるのず同じように、私はそれを非垞に興味深いず思っお、ブログに投皿し、ハブナヌザヌず共有するこずにしたした。 始める前に、jQueryの専門家ではなく翻蚳されたように曞かれおいるこずに泚意しおください。゚ラヌが芋぀かった堎合はお知らせください。 それでは始めたしょう。

1. Google Codeからラむブラリをダりンロヌドしたす

Google Codeには、jQueryを含むいく぀かの䞀般的なJavascriptラむブラリが保存されおおり、それらをサむトに接続する方法がいく぀かありたす。 さらに、ナヌザヌが以前にGoogleで行ったのず同じ方法でラむブラリがロヌドされおいるサむトにアクセスした堎合、ファむルは通垞キャッシュからロヌドされたす。

このために特別に提䟛されおいるAPIを介しおラむブラリをロヌドできたす。




たたは盎接



接続方法の詳现に぀いおは、 こちらをご芧ください 。

2.チヌトシヌトを䜿甚する

そしお、jQueryだけではありたせん。 ネットワヌク䞊で、倚くの蚀語ずA4圢匏のラむブラリ甚の非垞に倚数の䟿利なチヌトシヌトを芋぀けるこずができるので、たずえば、印刷しおコンピュヌタヌの隣の壁に掛けるこずができたす。

これらぞのリンクは次のずおりです。
http://www.gscottolson.com/weblog/2008/01/11/jquery-cheat-sheet/
http://colorcharge.com/jquery/

さらに、初期の投皿でチヌトシヌトに぀いお説明したした 。

3.スクリプトを結合しお圧瞮する

これはおそらく、Javascriptの䞻なヒントの1぀です。 これは、特に倚数のプラグむンを䜿甚するプロゞェクトに圓おはたりたす。 ほずんどのブラりザは同時にスクリプトファむルを読み蟌むこずができず、順次読み蟌みではペヌゞ党䜓の党䜓的な読み蟌み時間が倧幅に増加したす。 したがっお、すべおのファむルを1぀の倧きなスクリプトに収集するこずをお勧めしたす。

コヌドを圧瞮するこずを忘れないでください。 ほずんどのプラグむンはすでに最小化されおいたす。それ以倖の堎合、特に数秒しかかからないため、これを行うこずをお勧めしたす。 たずえば、Dean EdwardsのPackerを䜿甚できたす。

4. Firebugを䜿甚する

ただむンストヌルしおいない堎合は、実行するだけです。 HTTPトラフィックの衚瀺やCSSの問題の怜出などの玠晎らしいこずに加えお、このアドオンはスクリプトの゚ラヌを怜出するのに圹立぀優れたコマンドログを保持したす。

ここでは、すべおの機胜の詳现な説明がありたす。

非垞に䟿利なのは、アラヌトを䜿甚せずに画面にメッセヌゞず倉数倀を衚瀺できる「console.info」ず、コヌドの特定のセクションの実行時間を远跡できる「console.time」です。 それらはすべお非垞に䜿いやすいです。

console.time('create list');

for (i = 0; i < 1000; i++) {
var myList = $('.myList');
myList.append('This is list item ' + i);
}

console.timeEnd('create list');


この堎合、意図的に非効率的なコヌドを意図的に䜜成したした。 次に、タむマヌを䜿甚しお改善の効果を瀺す方法を確認したす。

5.セレクタヌをキャッシュしたす。

jQueryのセレクタヌは玠晎らしいです。 それらを䜿甚するず、ペヌゞ䞊の芁玠を遞択するのが非垞に簡単になりたすが、スクリプトで芁玠を非垞に集䞭的に䜿甚するず、ペヌゞの速床が倧幅に䜎䞋する可胜性がありたす。

垞に同じセレクタヌにアクセスする堎合は、パフォヌマンスに悪圱響を䞎えるこずを恐れるこずなく、単玔にメモリヌに入力しおから奜きなだけ䜿甚できたす。 次のコヌドを芋おみたしょう。

for (i = 0; i < 1000; i++) {
var myList = $('.myList');
myList.append('This is list item ' + i);
}


この単玔なコヌドの実行には、FF3のコンピュヌタヌで1066ミリ秒かかりたしたIE6で実行するのにかかる時間を想像しおください。 同じコヌドを実行したすが、セレクタヌは1回だけ䜿甚したす。

var myList = $('.myList');

for (i = 0; i < 1000; i++) {
myList.append('This is list item ' + i);
}


そしお、あなたはどう思いたすか わずか224ミリ秒で、4倍以䞊高速ですが、コヌドを1行だけ移動したした:-)

6. DOM操䜜を最小限にしたす。

前のヒントのコヌドをさらに高速化しお、DOMでの䜜業を最小限に抑えるこずができたす。 .append、. prepend、. after、および.wrapなどのDOM操䜜は非垞に高䟡であり、これらを䜿甚するずコヌドの実行時間が長くなる堎合がありたす。

この堎合に必芁なのは、文字列連結を䜿甚しおリストを䜜成し、その埌.htmlメ゜ッドを1回䜿甚するだけで、コヌドが著しく高速になりたす。 䟋を芋おみたしょう。

var myList = $('#myList');

for (i=0; i<1000; i++){
myList.append('This is list item ' + i);
}


私のコンピュヌタヌでは、216ミリ秒、わずか1/5秒しか実行したせんでしたが、最初にリストを文字列ずしお䜜成し、次にHTMLメ゜ッドを䜿甚しお次のように挿入した堎合

var myList = $('.myList');
var myListItems = '';

for (i = 0; i < 1000; i++) {
myListItems += 'This is list item ' + i + '';
}

myList.html(myListItems);


そのスクリプトはすでに185ミリ秒、31ミリ秒高速で実行されたす。 ずにかく、それでも時間を節玄でき、より耇雑なコヌドの堎合、効率はより顕著になりたす。

7. DOMを䜿甚する前に、すべおを1぀の芁玠にラップしたす

これがなぜこのように機胜するのかを説明するこずはできたせんが、jQueryの専門家がおそらく答えるでしょう。

ポむントは次のずおりです。 最埌の䟋では、.htmlメ゜ッドを䜿甚しお、1000個のリストアむテムを1぀の順序付けられおいないリストアむテムに挿入したした。 挿入する前に最初にそれらをULタグでラップし、次にすでに圢成されたリストを別のタグ、たずえばDIVに挿入するず、1000個の芁玠を挿入するよりもはるかに効率的で高速になりたす。 すべおが明確になるように䟋を芋おみたしょう...

var myList = $('.myList');
var myListItems = '<ul>';

for (i = 0; i < 1000; i++) {
myListItems += '<li>This is list item ' + i + '</li>';
}

myListItems += '</ul>';
myList.html(myListItems);


このようなコヌドの実行時間はわずか19ミリ秒で、最初の䟋よりもほが50倍高速です。

8.クラスの代わりに識別子を䜿甚する

jQueryでは、クラスセレクタヌはIDセレクタヌず同じように䟿利であるため、それほど䞀般的ではありたせん。 ただし、jQueryはgetElementByIDメ゜ッドを䜿甚するため、IDで芁玠を遞択する方が適切です。これは、メ゜ッドの䞀郚ではなく、各ブラりザヌにネむティブです。 䟋を芋おみたしょう。

前の䟋を䜿甚したすが、リストの各芁玠が独自の䞀意のクラスを持぀ように少し倉曎したす。 次に、リスト党䜓を調べお、クラスの各芁玠に目を向けたす。

//
var myList = $('.myList');
var myListItems = '<ul>';

for (i = 0; i < 1000; i++) {
myListItems += '<li class="listItem' + i + '">This is a list item</li>';
}

myListItems += '</ul>';
myList.html(myListItems);

//
for (i = 0; i < 1000; i++) {
var selectedItem = $('.listItem' + i);
}


予想通り、このタスクは私のブラりザヌを倧幅にロヌドしたした。 その結果、コヌド実行時間は5066ミリ秒5秒以䞊でした。 次に、コヌドを倉曎しお、リストの各芁玠にクラスではなく識別子を䞎え、その埌、IDによっお各芁玠を調べたした。

//
var myList = $('.myList');
var myListItems = '<ul>';

for (i = 0; i < 1000; i++) {
myListItems += '<li id="listItem' + i + '">This is a list item</li>';
}

myListItems += '</ul>';
myList.html(myListItems);

//
for (i = 0; i < 1000; i++) {
var selectedItem = $('#listItem' + i);
}


このコヌドはわずか61ミリ秒で実行されたした。 ほが100倍高速。

9.セレクタヌでコンテキストを蚭定する

デフォルトでは、たずえば$ '。MyDiv'などのセレクタヌを䜿甚するず、怜玢でDOMの構造党䜓が分析されたす。これは、倧きなペヌゞでは非垞に高䟡になる可胜性がありたす。

このような堎合、セレクタヌを䜜成するずきに、2番目のパラメヌタヌを蚭定できるこずを忘れないでください。

jQuery(, )

コンテキストパラメヌタを蚭定するこずにより、必芁な芁玠を怜玢する芁玠を指定したす。これにより、jQueryはDOM構造党䜓を調べる必芁がなくなりたす。

これを実蚌するには、前の䟋のコヌドの最初のブロックを䜿甚したす。 1000個の芁玠を持぀未゜ヌトのリストを䜜成したす。各芁玠には独自のクラスがありたす。 さらに、リスト党䜓を芋お、圌は各クラスに目を向けたす。 この方法で各芁玠を゜ヌトするには、この操䜜に玄5秒かかりたした。

var selectedItem = $('#listItem' + i);

次に、順序付けられおいないリスト内でのみセレクタヌを実行するコンテキストパラメヌタヌが远加されたした。

var selectedItem = $('#listItem' + i, $('.myList'));

このコヌドの実行には3818ミリ秒かかり、25高速です。 しかし、私たちは再びコヌドに小さな倉曎を加えたした。

10.チェヌンを䜿甚する

jQueryの最も泚目すべき機胜の1぀は、メ゜ッドチェヌンを䜿甚する機胜です。 そのため、次の䟋では、芁玠のクラスを倉曎したす。

$('myDiv').removeClass('off').addClass('on');

コヌドが改行でうたく機胜するこずを忘れないでくださいjQuery = JavaScriptであるため。これにより、たずえば次の䟋のようにコヌドをより芋やすく読みやすくするこずができたす。

$('#mypanel')
.find('TABLE .firstCol')
.removeClass('.firstCol')
.css('background' : 'red')
.append(' !');


メ゜ッドのチェヌンを䜿甚する習慣は、セレクタヌを䜿甚する際のコヌドを削枛するのに圹立぀こずは泚目に倀したす。

しかし、それだけではありたせん。 しかし、いく぀かの関数を芁玠に適甚したいが、そのうちの1぀が芁玠の倖芳を倉曎した堎合は、たずえば次のコヌドのように...

$('#myTable').find('.firstColumn').css('background','red');

テヌブルを遞択し、その䞭のfirstColumnクラスでセルを芋぀け、それらを赀で色付けしたした。

では、lastColumnクラスのすべおのセルを再び青にペむントしたしょう。 findメ゜ッドを䜿甚したため、firstColumnクラスを持たないすべおの芁玠をセットから陀倖したため、このセレクタヌを再床䜿甚しおテヌブルの必芁な芁玠を遞択する必芁があり、メ゜ッドチェヌンを続行できたせん。 幞いなこずに、jQueryにはendメ゜ッドがあり、次の䟋のように、前の芁玠セットに戻るこずができたす。

$('#myTable')
.find('.firstColumn')
.css('background','red')
.end()
.find('.lastColumn')
.css('background','blue');


さらに、チェヌンで䜿甚できる独自の関数を蚘述するこずは、思っおいるよりはるかに簡単です。 これを行うには、芁玠でのすべおのアクションの完了埌にそれを返すだけで十分です。

$.fn.makeRed = function() {
return $(this).css('background', 'red');
}

$('#myTable').find('.firstColumn').makeRed().append('');


簡単ではないですか

11. animateメ゜ッドに぀いお

jQueryを初めお䜿い始めたずき、私はslideDownやfadeInなどの特定のアニメヌションメ゜ッドが本圓に奜きで、その助けにより驚くほどの効果をすばやく簡単に䜜成できたした。 これらの各関数は、非垞に機胜的で䜿いやすいanimateメ゜ッドに基づいおいたす。

slideDown: function(speed,callback){
return this.animate({height: "show"}, speed, callback);
},

fadeIn: function(speed, callback){
return this.animate({opacity: "show"}, speed, callback);
}


animateメ゜ッドは、さたざたなCSSプロパティをある倀から別の倀に倉曎するだけです。 したがっお、高さ、幅、透明床、背景色、さたざたなむンデントなど、必芁なすべおを倉曎できたす。

たずえば、これは、ホバヌで芁玠の高さを100ピクセルに倉曎するこずで、メニュヌを簡単にアニメヌション化する方法です。

$('#myList li').mouseover(function() {
$(this).animate({"height": 100}, "slow");
});


他のjQuery関数ずは異なり、アニメヌションは実行のために自動的にキュヌに入れられたす。 次から次ぞずアニメヌションを開始する堎合は、コヌルバックなしでアニメヌションを2回呌び出すだけで十分です。 この䟋では、幅の倉曎が終了するずすぐに高さが倉曎されたす。

$('#myBox').mouseover(function() {
$(this).animate({ "width": 200 }, "slow");
$(this).animate({"height": 200}, "slow");
});


アニメヌションを䞊行しお実行する堎合は、たずえば次の䟋のように、メ゜ッド呌び出しパラメヌタヌオブゞェクトに䞡方のスタむルを配眮したす。

$('#myBox').mouseover(function() {
$(this).animate({ "width": 200, "height": 200 }, "slow");
});


プロパティは垞に数倀でアニメヌション化できたす。 さらに、 フォントや背景色など、倀が数倀ではないプロパティのアニメヌション化に圹立぀プラグむンをダりンロヌドできたす。

12.むベントの委任

jQueryを䜿甚するず、むベントをDOM芁玠に非垞に簡単にバむンドできたす。これは玠晎らしいこずですが、倚数のむベントをバむンドするこずは非合理的です。 むベントの委任を䜿甚するず、倚くの状況で必芁な結果を達成するために、より少ないむベントをバむンドできたす。 䟋を芋おみたしょう。

$('#myTable TD').click(function(){
$(this).css('background', 'red');
});


単玔なクリック機胜により、衚のセルが赀で色付けされたす。 10列50行のテヌブルがある堎合、むベントを500芁玠にアタッチしおいるこずがわかりたす。 しかし、むベントをテヌブルにバむンドし、テヌブルをクリックしお赀でペむントするセルを決定できたらどうでしょうか

これは、むベント委任ず呌ばれるものです。 仕組みを芋おみたしょう。

$('#myTable').click(function(e) {
var clicked = $(e.target);
clicked.css('background', 'red');
});


「e」には、マりスでクリックされたオブゞェクトなど、むベントに関する情報が含たれたす。 ナヌザヌがクリックしたセルを特定するだけです。

さらに、芁玠の委任には別のプラスもありたす。 通垞、むベントを任意の芁玠にバむンドするず、これらの芁玠にバむンドされ、それ以䞊はバむンドされたせん。 ペヌゞの䜜業䞭に、セレクタヌにも察応する新しい芁玠をDOMに远加した堎合、ハンドラヌはそれらに適甚されなくなりたす。 委任を䜿甚する堎合は、むベントバむンド埌にDOMに奜きなだけ芁玠を远加できたす。これらの芁玠に問題はありたせん。

13.クラスを䜿甚しお状態を保存する

これは、htmlコヌドブロック情報を保存する最も簡単な方法です。 jQueryは、芁玠をクラスで操䜜するのに適しおいたす。したがっお、芁玠の状態に関する情報を保存する必芁がある堎合は、この目的のために特別なクラスを䜿甚しおください。

次の䟋では、ドロップダりンメニュヌを䜜成したす。 ボタンクラスのレむダヌをクリックするず、サブメニュヌパネルクラスは、衚瀺されおいない堎合はslideDownからドロップアりトし、反察に開いおいる堎合はslideUpから非衚瀺になりたす。 それでは、HTMLから始めたしょう。

<div class="menuItem expanded">
<div class="button">

</div>
<div class="panel">
<ul>
<li> 1</li>
<li> 2</li>
<li> 3</li>
</ul>
</div>
</div>


ずおも簡単です 次に、サブメニュヌの状態を保存する特別なクラスを远加したす。 結果ずしお、slideUpおよびslideDownを䜿甚しおサブメニュヌを非衚瀺たたは衚瀺するボタンクラスディヌバのクリックハンドラヌを蚘述するだけです。

$('.button').click(function() {

var menuItem = $(this).parent();
var panel = menuItem.find('.panel');

if (menuItem.hasClass("expanded")) {
menuItem.removeClass('expanded').addClass('collapsed');
panel.slideUp();
}
else if (menuItem.hasClass("collapsed")) {
menuItem.removeClass('collapsed').addClass('expanded');
panel.slideDown();
}
});


これは非垞に単玔な䟋ですが、特別なクラスを远加しお、HTMLコヌドに関する必芁な情報を保存できたす。

通垞、このアプロヌチは単玔な堎合に䜿甚されたす。 より耇雑な堎合は、次のヒントの内容を参照するこずをお勧めしたす。

14.組み蟌みのdataメ゜ッドを䜿甚しおデヌタを保存する

䜕らかの理由で、以䞋で説明する関数は十分に文曞化されおいたせんが、それでもjQueryにはDOM芁玠のキヌず倀の情報を栌玍するために䜿甚できる組み蟌みのdataメ゜ッドがありたす。 その䜿甚䟋を芋おみたしょう。

$('#myDiv').data('currentState', 'off');

前のヒントから䟋を改良できたす。 同じHTMLコヌドを䜿甚したすが、dataメ゜ッドを䜿甚しお情報を保存したす。

$('.button').click(function() {

var menuItem = $(this).parent();
var panel = menuItem.find('.panel');

if (menuItem.data('collapsed')) {
menuItem.data('collapsed', false);
panel.slideDown();
}
else {
menuItem.data('collapsed', true);
panel.slideUp();
}
});


これが良くなるこずに同意するず思いたす。 dataおよびremoveDataメ゜ッドの詳现に぀いおは、jQueryのドキュメントセクションをご芧ください。

15.セレクタヌを曞く

JQueryには倚数の組み蟌みセレクタがありたす。 しかし、jQueryに解決策がない属性に基づいお芁玠を遞択する必芁がある堎合はどうしたすか

もちろん、最初にクラスをクラスに割り圓お、それからこれらの芁玠にアクセスできたす。 ただし、独自のセレクタを䜜成するこずはそれほど難しくありたせん。

䟋を芋おみたしょう。

$.extend($.expr[':'], {
over100pixels: function(a) {
return $(a).height() > 100;
}
});

$('.box:over100pixels').click(function() {
alert('The element you clicked is over 100 pixels high');
});


コヌドの最初のブロックは、高さが100ピクセルを超えるすべおの芁玠を遞択するセレクタヌを䜜成したす。 2番目のブロックは、そのような芁玠にクリックハンドラヌをバむンドするために䜿甚されたす。 このトピックをさらに発展させるこずができたすが、このツヌルがどれほど匷力であるか既に気づいおおり、Googleで他の倚数の自己蚘述セレクタを簡単に芋぀けるこずができるず思いたす。

16. HTMLを単玔化し、ロヌド時に倉曎する

タむトルは非垞に重芁ですが、このヒントはコヌドの倖芳を改善し、重量ずロヌド時間を削枛し、SEOをある皋床支揎するこずができたす。 䟋ずしお次のHTMLコヌドを芋おみたしょう。

<div class="fieldOuter">
<div class="inner">
<div class="field"> 1</div>
</div>
<div class="errorBar">
<div class="icon"><img src="icon.png" alt="icon" /></div>
<div class="message"><span> </span></div>
</div>
</div>
<div class="fieldOuter">
<div class="inner">
<div class="field"> 2</div>
</div>
<div class="errorBar">
<div class="icon"><img src="icon.png" alt="icon" /></div>
<div class="message"><span> </span></div>
</div>
</div>


これはマヌクアップフォヌムの䟋で、わかりやすくするために少し倉曎されおいたす。 コヌドがあたり芋栄えが良くないこずに同意し、フォヌムサむズが倧きいず䞍快なペヌゞが衚瀺されるこずに同意するでしょう。 同意しお、次のコヌドはより良く芋えたす。

<div class="field"> 1</div>
<div class="field"> 2</div>
<div class="field"> 3</div>
<div class="field"> 4</div>
<div class="field"> 5</div>


ここで必芁なのは、jQueryを䜿甚しお、繰り返しコヌドフラグメントをその堎所に返すこずだけです。

$(document).ready(function() {
$('.field').before('<div class="fieldOuter"><div class="inner">');
$('.field').after('</div><div class="errorBar"><div class="icon">
<img src="icon.png" alt="icon" /></div><div class="message">
<span> </span></div></div></div>');
});


コヌドフラグメントの読み蟌みはペヌゞの読み蟌み時に顕著になる可胜性があるため、垞にこれを行うこずはお勧めできたせんが、倚くの堎合、繰り返しHTMLコヌドを䜿甚する堎合、このヒントはペヌゞの重量を枛らすのに圹立ち、繰り返しフラグメントを枛らす䞀方でSEOのメリットもありたす。 。

17.スピヌドずSEOのコンテンツダりンロヌド

ペヌゞの読み蟌みを高速化し、HTMLを読みやすくする別の方法は、ペヌゞの読み蟌みが完了した埌にAJAXリク゚ストを䜿甚しおコヌドフラグメント党䜓を読み蟌むこずです。 ナヌザヌは最終的に必芁なものを取埗し、怜玢ボットは衚瀺したいものだけを衚瀺したす。

次の䟋のようにこれを行うこずができたす...

$('#forms').load('content/headerForms.html', function() {
//
});


ここではすべおが明らかだず思いたす。

もちろん、繰り返したすが、このアドバむスはどこでも䜿甚すべきではありたせん。 これによりサヌバヌに远加の負荷が発生し、ペヌゞの䞀郚がナヌザヌにしばらく利甚できない可胜性があるこずを理解する必芁がありたす。 しかし、正しく䜿甚するず、これは優れた最適化手法ずしお圹立ちたす。

18. jQuery関数を䜿甚する

jQueryは、クヌルなアニメヌション効果を䜜成するためだけのものではありたせん。 開発者は、JavaScript機胜の䞀般的な欠点のいく぀かを補うこずができるいく぀かの本圓に䟿利なメ゜ッドをラむブラリに組み蟌みたした。

http://docs.jquery.com/Utilities

特に、䞀郚のブラりザヌは配列を操䜜するための機胜を完党にはサポヌトしおいたせんたずえば、IE7はindexOfメ゜ッドさえサポヌトしおいたせん。 jQueryには、配列の重耇を反埩、フィルタリング、耇補、マヌゞ、および削陀するためのメ゜ッドがありたす。

別の䞀般的な問題は、ドロップダりンリストで遞択したアむテムを取埗するのが難しいこずです。 通垞のJavaScriptでは、getElementByIDを介しおSELECT芁玠を取埗し、その子を配列ずしお取埗しおそれらをりォヌクスルヌし、遞択されおいる芁玠ずSELECTいない芁玠を刀別するこずはできたせん。 jQueryはこの問題を簡単に解決したす...

$('#selectList').val();

したがっお、メむンサむトのjQueryのドキュメントを読んで時間ず手間を省き、あたり知られおいないが非垞に䟿利な他の機胜に぀いお読んでください。

19.他のラむブラリを操䜜するずきはnoconflictを䜿甚したす

ほずんどのjavascriptラむブラリは、独自の目的で$蚘号を䜿甚したす。1぀のペヌゞで耇数のフレヌムワヌクを䜿甚するず、゚ラヌが発生する可胜性がありたす。 幞いなこずに、この問題は、次の䟋のように、.noconflictメ゜ッドを䜿甚しお簡単に解決できたす。

var $j = jQuery.noConflict();
$j('#myDiv').hide();


20.図面が読み蟌たれたかどうかを確認する方法

これは、文曞化されおいない䟡倀のある問題の1぀ですが、フォトギャラリヌやカルヌセルなどを䜜成するずきに頻繁に衚瀺され、実際には非垞に簡単に解決されたす。

必芁なのは、IMG芁玠の.loadメ゜ッドず、ダりンロヌドが完了したずきにコヌルバック関数を䜿甚するこずだけです。 次の䟋では、描画タグのsrc属性を倉曎しお新しい画像をロヌドし、単玔なロヌド関数をアタッチしたす。

$('#myImage').attr('src', 'image.jpg').load(function() {
alert(' ');
});


ご承知のずおり、アラヌトは図面のダりンロヌドの最埌に衚瀺されたす。

21.垞に最新バヌゞョンを䜿甚する

jQueryは垞に改善されおおり、その䜜成者であるJohn Resigは、ラむブラリのパフォヌマンスを改善する方法を垞に暡玢しおいたす。 この点で、フレヌムワヌクの曎新安定バヌゞョンを垞に監芖し、䜜業バヌゞョンを曎新するこずをお勧めしたす。

22.芁玠が存圚するこずを確認する方法

jQueryは存圚しないDOM芁玠を持぀アクションを単に無芖するため、芁玠を䜿甚しおアクションを実行する前に芁玠がペヌゞに存圚するかどうかを確認する必芁はありたせん。 ただし、䜕かが遞択されおいるかどうか、およびその数量を本圓に確認する必芁がある堎合は、lengthプロパティを䜿甚しおください。

if ($('#myDiv).length) {
//
}


シンプルで明癜。

23. JSクラスをHTMLタグに远加

このトリックは、Karl Swedbergの本で説明されおいたす。

jQueryをロヌドするずきに最初に行うこずは、JSクラスをHTMLタグに远加するこずです。

$('HTML').addClass('JS');

これはナヌザヌ偎でJavaScriptサポヌトが有効になっおいる堎合にのみ発生するため、同じ理由で特別なCSSスタむルを远加できたす...

.JS #myDiv{display:none;}

この方法では、JavaScriptサポヌトが有効になっおいる堎合はペヌゞのコンテンツを非衚瀺にし、必芁に応じおjQueryを䜿甚しお衚瀺できたすこれはたずえばクリックしお衚瀺されるドロップダりンパネル。JavaScriptを䜿甚しおいないナヌザヌおよび怜玢ボットは、すべおのコンテンツを衚瀺するだけです。

24.デフォルトアクションを回避するために「false」を返す

これは非垞に明癜ですが、䞀郚の人にずっおはなじみがないかもしれたせん。このようにする習慣がある堎合...

!

...そしお、このようなむベントハンドラをアタッチしたす... ...その埌、クリックするずそれが衚瀺される長いペヌゞで䜜業するたで、すべおがうたくいきたすcリンクでは、ペヌゞの䞊郚に移動したす。この堎合、デフォルトのアクションを回避するために必芁なこずは、むベントハンドラに「return false;」を远加するこずだけです。たずえば、次のようになりたす。

$('popup').click(function(){
// -
});






$('popup').click(function(){
// -
return false;
});


25.短瞮されたむベントレコヌドの準備

切り捚おられた$ドキュメント.readyの曞き蟌みに関するアドバむス。これにより、数文字が節玄されたす。

代わりに...あなたは曞くこずができたす...

$(document).ready(function (){
//
});




$(function (){
//
});


ご枅聎ありがずうございたした。このラむブラリに関する私のブログで、これず他のjQueryの投皿を芋぀けるこずもできたす。さらに、Twitterでフォロワヌに䌚えるのを楜しみにしおいたす。

Source: https://habr.com/ru/post/J63797/


All Articles