Ma solution simple, elle ne nécessite aucun plugin externe et devrait suffire pour les cas courants :
/**
* Trigger a callback when the selected images are loaded:
* @param {String} selector
* @param {Function} callback
*/
var onImgLoad = function(selector, callback){
$(selector).each(function(){
if (this.complete || /*for IE 10-*/ $(this).height() > 0) {
callback.apply(this);
}
else {
$(this).on('load', function(){
callback.apply(this);
});
}
});
};
Utilisez-le comme ceci :
onImgLoad('img', function(){
// do stuff
});
par exemple, pour faire apparaître vos images en fondu sur la charge, vous pouvez le faire :
$('img').hide();
onImgLoad('img', function(){
$(this).fadeIn(700);
});
Ou comme alternative, si vous préférez une approche de type plugin jquery :
/**
* Trigger a callback when 'this' image is loaded:
* @param {Function} callback
*/
(function($){
$.fn.imgLoad = function(callback) {
return this.each(function() {
if (callback) {
if (this.complete || /*for IE 10-*/ $(this).height() > 0) {
callback.apply(this);
}
else {
$(this).on('load', function(){
callback.apply(this);
});
}
}
});
};
})(jQuery);
et l'utiliser de cette manière :
$('img').imgLoad(function(){
// do stuff
});
par exemple :
$('img').hide().imgLoad(function(){
$(this).fadeIn(700);
});
13 votes
Depuis votre question, les choses ont changé. Le plugin cassé a été déplacé vers un gist et plus tard vers un repo avec un fichier Petit plugin fonctionnel jQuery.imagesLoaded . Ils réparent tous les les petites bizarreries du navigateur .
0 votes
La bibliothèque JQuery mentionnée ci-dessus a bien fonctionné pour moi. Merci !
0 votes
Merci pour le plugin, il a bien fonctionné.