質問

私は今、しばらくの間、反復処理を行うには$ .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を割り当てます。 conditioncondition2は相互に排他的である場合、単一if (condition || condition2)を使用します。

他のヒント

誰かがfor$.eachのパフォーマンスを比較しました

ます。http:// jquery- howto.blogspot.com/2009/06/javascript-for-loop-vs-jquery-each.htmlする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top