Я работаю над скриптом, который просматривает все изображения на странице и заменяет их версией «Retina ready», если этот файл существует. Проблема заключается в том, что, как цикл проходит через каждый образ, она изменяет переменные:jQuery Retina image replacement loop
retinaText = "@2x";
$("img").each(function(){
filename = $(this).attr("src");
ext = "."+filename.substr((Math.max(0, filename.lastIndexOf(".")) || Infinity) + 1);
filesource = filename.split(ext)[0];
retinaImage = filesource + retinaText + ext;
//check if images exists
$.ajax({
url:retinaImage,
type:'POST',
error: function(){ },
success: function(){
//file exists
//replace image with retina ready image
//$(this).attr("src",retinaImage);
}
});
});
Я создал тестовую среду, в которой первое изображение было замены, а другие не делали, однако, так как цикл продолжается пробегают изображения, переменные меняются.
Если изображения настроены так:
<img src="image1.jpg" />
<img src="image2.jpg" />
<img src="image3.jpg" />
<img src="image4.jpg" />
И этот образ существует в том же каталоге:
<img src="[email protected]" />
Сценарий заканчивается пытается заменить image4 с «image4 @ 2x» потому что переменная retinaImage и $ (это) с тех пор изменились.
Любая помощь была бы принята с благодарностью.
Отлично! Спасибо! – user433351