Próbuję zaimplementować coś w rodzaju karuzeli zdjęć w jQuery. Ta karuzela może być wypełniona obrazami przy użyciu tablicy źródeł obrazu (tworzę prośbę ajaxową, która zwraca json z tymi danymi) i po wypełnieniu możesz wywołać kilka metod, previous() i next(), aby przenieść odpowiednio do karuzeli w przód iw tył.Czy zdarzenie "gotowe" zostało wywołane, gdy element jQuery jest tworzony w locie?
Chodzi o to, że funkcjonalność jest już wdrożona i działa, ale nie mogę rozwiązać problemu z procesem zmiany rozmiaru. Aby uniknąć sytuacji, w której obrazy przekraczają granice kontenera, w razie potrzeby dysponuję metodą do tworzenia i zmiany rozmiaru obrazów.
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;
};
Podczas testowania tej funkcji okazało się, że czasami obrazy nie są przesuwane zgodnie z oczekiwaniami. Użyłem firebug console.log() do zalogowania obrazu [0] .width tuż poniżej tworzenia elementu jQuery, dowiadując się, że czasami wartość wynosi 0.
Nie jestem ekspertem od jQuery, ale przypuszczam, że że gdy tak się stanie (wartość wynosi 0), to znaczy, że element nie jest gotowy.
Jak mogę zapewnić, że element jest już załadowany, gdy pytam o jego szerokość i wysokość?
Czy coś takiego jest możliwe?
var image = $('<img />', {src : imageSrc}).ready(function() {
// But image[0].width it's not available here!
});
Dziękuję za pomoc!
możliwy duplikat [zdarzenia jQuery dla załadowanych obrazów] (http://stackoverflow.com/questions/910727/jquery-event-for-images-loaded) – spender
@spender - Proszę zobaczyć moje komentarze do odpowiedzi Sarfraza ... this isn ' t to samo pytanie, i to nie jest odpowiednia odpowiedź, nie powinno się tego zamykać jako duplikatu ... ponieważ, w ell, to jest inne pytanie. –
@Nick, mogę tylko myśleć, że nie zauważyłeś, że Sarfaz używa zdarzenia obciążenia okna, ale odpowiedź w połączonym pytaniu używa zdarzenia ładowania obrazu. Zamieszczę odpowiedź, aby zademonstrować, ale to naprawdę nie powinno być konieczne. – spender