Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Сменить атрибут у тега img (https://javascript.ru/forum/jquery/41183-smenit-atribut-u-tega-img.html)

lifecom 03.09.2013 15:09

Сменить атрибут у тега img
 
Пытаюсь задействовать последнюю версию jQuery плагина lazyload.
Дело в том, что последняя версия "просит" для изображений атрибут "data-original", а для гифки подгузки - атрибут scr.

Т.е. нужно сменить атрибут scr на data-original.
А в атрибут scr прописать путь до гифки.

В конце скрипта плагина делаю так:
(function($) {
    $(document).ready(function(){
		var dataoriginal = $("#content img").attr("src");

		$("#content img").attr("data-original", dataoriginal);
		$("#content img").attr("src", "images/loader.gif");
		$("#content img").lazyload({
			 effect : "fadeIn"
		});
    });
})(jQuery);

Проблема в следующем:
Подгрузка работает, но всем изображениям задается атрибут data-original от первого изображения на странице. И соответственно на всей странице повторяется только 1-е изображение.

P.S.: по ряду причин в html влезать нельзя

рони 03.09.2013 15:47

lifecom,
откройте для себя .each() Вызывает заданную функцию для каждого элемента набора
это

var dataoriginal = $("#content img").attr("src");

$("#content img").attr("data-original", dataoriginal);

$("#content img").attr("src", "images/loader.gif");

вам нужно проделать с каждым img

danik.js 03.09.2013 16:52

Цитата:

Сообщение от lifecom
P.S.: по ряду причин в html влезать нельзя

Это значит что никакого lazyload не получится. Браузер сразу начинает грузить все картинки и грузит он их до победного. И никакие скрипты уже ничего с этим не поделают.
Вместо гифки лучше отображать текущее загруженное изображение. Лучше всего когда jpeg сохранен в "прогрессивном" формате, тогда картинка отображается сразу и по мере загрузки становится четче.


Часовой пояс GMT +3, время: 05:51.