Pregunta

He estado usando $ .Cada hacer iteraciones desde hace un tiempo, pero sigo al oír la gente dice de usar JS nativas para hacer bucles. Estoy muy preocupado por el rendimiento, pero no estoy seguro de si siempre es posible reemplazar $ .Cada por de una manera significativa.

Así que mis preguntas son, ¿es posible reemplazar siempre $ .Cada por, y si no ¿cuál es la regla de oro para cuando se puede hacer y cuando no puede.

Tengo una cada de esta manera:

 $this.find("div.class").each(function (){
  var $thisparent = $(this).parent();

  if (condition) {          
   $(this).prepend($thisparent.text());
  }

  if (condition2) {          
   $(this).prepend($thisparent.text());
  }

 });
¿Fue útil?

Solución

Esto es lo que hace con jQuery .each, básicamente

$.fn.each = function(callback) {
    var i, length = this.length;
    for(i = 0; i < length; ++i) {
        callback.call(this[i]);
    }
};

Así que no es difícil de sustituir de su función anónima 'contenido' con la llamada callback.call. Sólo asegúrese de reemplazar this con un temporal con el objeto jQuery.

La conversión de su código suministrado:

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());
    }
}

Para la velocidad adicional (potencial), foo[i] caché en un temporal. también, y asignar $thisparent sólo cuando sea necesario. Si condition y condition2 son mutuamente excluyentes, utilizar una sola if (condition || condition2).

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top