Это то, что jQuery делает с .each
, в основном :
$.fn.each = function(callback) {
var i, length = this.length;
for(i = 0; i < length; ++i) {
callback.call(this[i]);
}
};
Так что нетрудно заменить «содержимое» вашей анонимной функции вызовом callback.call
. Обязательно замените this
временным объектом jQuery.
Преобразование вашего кода:
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)
.