jQuery chargement des images avec rappel complet
J'ai vu un commentaire sur Ben Nadel blog où Stephen se Précipiter posté un chargeur, mais je ne peux pas savoir comment je peux passer les sélecteurs et les paramètres..
Je pense que j'ai aussi besoin d'un completeCallback & errorCallback fonctions?
function imgLoad(img, completeCallback, errorCallback) {
if (img != null && completeCallback != null) {
var loadWatch = setInterval(watch, 500);
function watch() {
if (img.complete) {
clearInterval(loadWatch);
completeCallback(img);
}
}
} else {
if (typeof errorCallback == "function") errorCallback();
}
}
//then call this from anywhere
imgLoad($("img.selector")[0], function(img) {
$(img).fadeIn();
});
HTML:
<a href="#" class="tnClick" ><img id="myImage" src="images/001.jpg" /></a>
JS:
$(document).ready(function() {
var newImage = "images/002.jpg";
$("#myImage").css("display","none");
$("a.tnClick").click(function() {
//imgLoad here
});
})
source d'informationauteur FFish | 2010-03-06
Vous devez vous connecter pour publier un commentaire.
Si vous voulez qu'il se charge avant de les présenter, vous pouvez couper que beaucoup, comme ceci:
La
.one()
appel permet de s'assurer .load() ne se déclenche une fois, donc pas de double fade-ins. Le.each()
à la fin, c'est parce que certains navigateurs ne pas le feu à laload
cas pour les images récupérées à partir du cache, c'est ce que le bureau de vote dans l'exemple que vous avez posté est en train d'essayer de faire aussi bien.Vous devez être prudent lors de l'utilisation de l'événement load image car si l'image est trouvée dans le cache du navigateur IE et I m'a dit) Chrome ne se déclenche pas l'événement comme prévu.
Depuis que j'ai eu à faire face à ce problème moi-même, je l'ai résolu en vérifiant les DOM attribut complète (dit-on travailler dans la plupart des principaux navigateurs): si est égal à true je viens de unbinded précédemment lié à la "charge" de l'événement. Voir l'exemple:
Espère que cette aide
Je voulais cette fonctionnalité et certainement ne voulez pas avoir à charger toutes les images lorsque la page est affichée. Mes images sont sur Amazon s3 et avec une grande galerie, ce serait beaucoup de demandes inutiles. J'ai créé un rapide plugin jQuery pour gérer ici:
Donc, fondamentalement, chaque fois qu'un utilisateur clique sur une vignette qui représente un ensemble de photos, je charge les autres images à ce point dans le temps. Le rappel me permet de modifier le css une fois l'image chargée.
Essayer celui-ci?
Semble comme ci-dessus fonctionne partout...