それぞれのためにjQueryのを交換します
-
20-09-2019 - |
質問
私は今、しばらくの間、反復処理を行うには$ .eachを使用してきたが、私は人々がループを行うためのネイティブのJSを使用するように言って聞いておきます。私は、パフォーマンスについて非常に心配ですが、私はそれが意味のある方法でのために$ .eachを交換することは常に可能かどうかわからない。
そこで、私の質問は、あるそれは常に、それが行われたときに、それができないことができたときのための親指のルールは何のために$ .eachを交換し、そうでない場合はすることが可能である。
私はこのような各があります:
$this.find("div.class").each(function (){
var $thisparent = $(this).parent();
if (condition) {
$(this).prepend($thisparent.text());
}
if (condition2) {
$(this).prepend($thisparent.text());
}
});
解決
これは、jQueryの.each
で何をするかであるの基本的の
$.fn.each = function(callback) {
var i, length = this.length;
for(i = 0; i < length; ++i) {
callback.call(this[i]);
}
};
それはcallback.call
呼び出しを使用して匿名関数の「中身」を置換する難しいことではありませんので。ただ、jQueryオブジェクトを一時的にthis
を交換してください。
あなたの供給コードを変換します
var foo = $this.find("div.class"),
fooLength = foo.length,
i,
$thisparent;
for (i = 0; i < fooLength; ++i) {
$thisparent = $(foo[i]).parent();
if (condition) {
$(foo[i]).prepend($thisparent.text());
}
if (condition2) {
$(foo[i]).prepend($thisparent.text());
}
}
一時的に追加の(潜在的な)速度、キャッシュfoo[i]
ください。あまりにも、そして必要なときにだけ$thisparent
を割り当てます。 condition
とcondition2
は相互に排他的である場合、単一if (condition || condition2)
を使用します。
他のヒント
誰かがfor
と$.each
のパフォーマンスを比較しました
ます。http:// jquery- howto.blogspot.com/2009/06/javascript-for-loop-vs-jquery-each.htmlする
所属していません StackOverflow