2016-01-03 5 views
0

Я пытаюсь назначить .attr изображениям с использованием jQuery.jQuery img .attr не работает, если window.onload

window.onload = function() { 
jQuery('img[src="/i.gif"][alt="info"]').attr({ width: '20px', height: '20px' }); 
} 

вышеуказанные работы, однако,

jQuery(document).ready(function() { 
jQuery('img[src="/i.gif"][alt="info"]').attr({ width: '20px', height: '20px' }); 
}); 

не работает.

По некоторым причинам мне необходимо, чтобы .attr назначался раньше, чем window.onload. Есть ли способ запустить сценарий в тот момент, когда изображение загружается? В принципе, я хочу как можно скорее изменить .attr, не дожидаясь window.onload.

+0

Являются ли эти атрибуты жестко закодированными? Если верно, почему бы вам просто не установить их с помощью CSS? – Fahmi

+0

Иногда есть причины, по которым вам нужно вручную устанавливать атрибуты, а не прибегать к CSS. Одним из примеров может быть то, где есть встроенный важный CSS, который вы не можете переопределить. –

+0

Я сомневаюсь, что это оптимизирует скорость страницы, поскольку все, что вам нужно сделать, - это масштабировать изображение, которое не повлияет на размер исходного файла. – Fahmi

ответ

0

То, вероятно, потому, что ваш образ в еще не загружен в DOM готов, так что вы можете придерживаться $(window).load() или использовать нагрузку на изображении() событие, так как

jQuery(document).ready(function() { 
    jQuery('img[src="/i.gif"][alt="info"]').load(function() { 
     $(this).attr({ width: '20px', height: '20px' }); 
    }).each(function() { 
     if(this.complete) $(this).load(); 
    }); 
}); 

Update :: Если источник изображения уже набор, вам нужно выполнить дополнительную проверку изображения кэшей, как в примере выше. Демо jsFiddle

+0

К сожалению, это не сработало для меня, атрибуты не были изменены ... ранее я искал через stackoverflow и пробовал ряд «.load» решений, но я не мог заставить их работать –

+0

вы получаете какую-либо ошибку при загрузке изображения мероприятие..? –

+0

@DavidZ см. Мой обновленный ответ. Если источник изображения уже установлен, необходимо выполнить дополнительную проверку для кэшированных изображений. Я думаю, что это то, что нужно сделать. –