我已经使用了$。每次我们做了一段时间的迭代,但我一直在听人说用于做循环本地JS。我很关心性能,但我不知道,如果它总是有可能与以有意义的方式来代替$。每。

所以我的问题是,是否有可能总是与替换$。每次,如果没有什么经验的时候可以做它的规则,当它不能。

我有一个每个这样的:

 $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)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top