Вы можете использовать цикл $.each()
для создания замыкания (для которого этот индекс является собственной переменной, не разделяемой), в которой вы нуждаетесь ... и .position()
вызов также нуждается в небольшом изменении, вы должны использовать .css()
здесь, который принимает объект, например так:
function initResources() {
var newImage;
$.each(resourceData, function(i, data) {
newImage = $('<img alt="Big" id="imgA' + i + '" class="mediaImg" width="' + Math.round(data[2] * currentScale) + '" height="' + Math.round(data[3] * currentScale) + '" />');
newImage.load(function() {
$(this).css({ top: Math.round(data[5] * currentScale),
left: Math.round(data[4] * currentScale) });
});
newImage[0].src = uploadFolder + '/' + imgData[data[1]][1];
$('#thePage').append(newImage);
});
}
Вы можете сократить этобольше, но это не будет более эффективным.Имейте в виду, что внутри обработчика событий .load()
вы можете ссылаться на элемент, для которого этот обработчик используется с this
, нет необходимости выбирать его снова.