J'essaye d'implémenter quelque chose comme un carrousel de photo dans jQuery. Ce carrousel pourrait être rempli d'images en utilisant un tableau de sources d'images (je fais une requête ajax qui renvoie un json avec ces données) et, une fois rempli, vous pouvez appeler quelques méthodes, previous() et next() pour vous déplacer le carrousel en arrière et en avant respectivement. Le fait est que cette fonctionnalité est déjà implémentée et fonctionne, mais je ne peux pas résoudre un problème sur le processus de redimensionnement. Pour éviter que les images dépassent les limites du conteneur, j'ai une méthode pour créer et redimensionner les images, si nécessaire. En testant cette fonction, j'ai constaté que, parfois, les images ne sont pas redimensionnées comme prévu.Y a-t-il un événement "ready" déclenché lorsqu'un élément jQuery est créé à la volée?
this.getImageResized = function(imageSrc) {
var image = $('<img />', {src : imageSrc});
// Container ratio
var ratio = this.itemMaxWidth/this.itemMaxHeight;
// Target image ratio is WIDER than container ratio
if((image[0].width/image[0].height) > ratio) {
if(image[0].width > this.itemMaxWidth) {
image.css('width', this.itemMaxWidth + 'px');
image.css('height', 'auto');
}
// HIGHER
} else {
if(image[0].height > this.itemMaxHeight) {
image.css('width', 'auto');
image.css('height', this.itemMaxHeight + 'px');
}
}
// Embeds image into a wrapper with item's width and height
var wrapper = $('<span style="display : block; float : left; width : ' + this.itemMaxWidth + 'px; height : ' + this.itemMaxHeight + 'px"></span>');
image.appendTo(wrapper);
return wrapper;
};
J'ai utilisé firebug console.log() pour enregistrer l'image [0] .width juste en dessous de la création de l'élément jQuery, découvrant que parfois la valeur est 0.
Je ne suis pas un expert sur jQuery, mais je suppose que lorsque cela arrive (la valeur est 0), c'est parce que l'élément n'est pas prêt. Comment puis-je m'assurer que l'élément est déjà chargé lorsque je demande ses valeurs de largeur et de hauteur?
Est-ce quelque chose comme cela possible?
var image = $('<img />', {src : imageSrc}).ready(function() {
// But image[0].width it's not available here!
});
Nous vous remercions de votre aide!
copie possible de [événement jQuery pour les images chargées] (http://stackoverflow.com/questions/910727/jquery-event-for-images-loaded) – spender
@spender - S'il vous plaît voir mes commentaires à la réponse de Sarfraz ... this isn ' t la même question, et ce n'est pas la réponse appropriée non plus, cela ne devrait pas être fermé comme un doublon ... parce que, w ell, c'est une question différente. –
@Nick, je ne peux que penser que vous n'avez pas remarqué que Sarfaz utilise l'événement de chargement de fenêtre, mais la réponse dans la question liée utilise l'événement de chargement d'image. Je posterai une réponse pour démontrer, mais cela ne devrait vraiment pas être nécessaire. – spender