Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Pobranie wysokość wczytanego obrazka - ajax
drzalek
post
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 18
Dołączył: 6.03.2007

Ostrzeżenie: (0%)
-----


Witam,
Mam taki oto problem:
Chciałbym pobrać wysokość obrazka, który został wczytany za pomocą jquery do kodu strony. Niestety mój skrypt nie działa zbyt dobrze. Wysokość zostaje pobrana prawidłowo tylko wtedy, gdy zdjęcie było już wcześniej wczytane na stronie, jeśli zdjęcie ładuje się po raz pierwszy zostaje pobrana wartość 20, czyli taka jak wtedy gdy nie ma żadnej fotki.

Kod jquery przedstawia się następująco:

  1. $('#navigator li a').click(function(){
  2.  
  3. katalog = $(this).attr('href');
  4.  
  5. $.get('photo.php',{'id' : $(this).attr('href')}, function(data){
  6. //zwraca liste zdjec odseparowanych srednikiem
  7. var separator = ';';
  8. $i=0;
  9. galeria = data.split(separator); //tworzy tablice ze wszystkimi zdjeciami z danej galerii
  10.  
  11. element = '<img src="galerie/'+katalog+'/'+galeria[$i]+'" alt="fotografia" id="photo"/>'
  12.  
  13.  
  14. $('#photo').replaceWith(element);
  15.  
  16. });
  17.  
  18. var height = $('#photo').height(); //wysokosc obrazka po wczytaniu
  19.  
  20. alert(height);
  21.  
  22. return false;
  23. });
  24.  
  25. $('#next-container img').click(function(){
  26.  
  27. $i = $i + 1;
  28. if($i>=galeria.length-1){
  29. $i = 0;
  30. }
  31.  
  32. var element = '<img src="galerie/'+katalog+'/'+galeria[$i]+'" alt="fotografia" id="photo"/>'
  33. //alert(element);
  34.  
  35. $('#photo').replaceWith(element);
  36.  
  37.  
  38.  
  39. var height = $('#photo').height(); //wysokosc obrazka po wczytaniu nast zdjecia
  40. alert(height);
  41. return false;
  42. });


id photo to identyfikator zdjęcia ładowanego na stronie.
Czy ktoś ma może jakiś pomysł na rozwiązanie problemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Zastąp odpowiednie linijki tym kodem:
1. $('#navigator li a').live('click', function(){ ...
25. $('#next-container img').live('click', function(){ ...

Powinno pomóc


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
everth
post
Post #3





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Popraw adres obrazka bo chyba nie jest prawidłowy. Użyj natywnego JS Image zamiast wpisywać kod obrazka w HTML. Jeśli przeglądarka jest normalna to powinna pobrać obrazek a atrybuty width i height ustawić na jego właściwe wymiary.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
drzalek
post
Post #4





Grupa: Zarejestrowani
Postów: 170
Pomógł: 18
Dołączył: 6.03.2007

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedzi.
Zamieniłem replaceWith na takie coś:
  1. document.getElementById("photo").src='galerie/'+katalog+'/'+galeria[$i];


Teraz działa prawie dobrze, tzn. zwraca poprawne wartości wysokości obrazka, ale bierze ten poprzednio wczytany, a nie ten który jest obecnie pobierany, czyli w efecie problem nadal istnieje sad.gif
Go to the top of the page
+Quote Post
everth
post
Post #5





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Pomyśl co to robi
[JAVASCRIPT] pobierz, plaintext
  1. img = new Image();
  2. img.src='http://images3.wikia.nocookie.net/__cb20060203180427/nonsensopedia/images/1/14/Informatyk_w_pracy.gif';
  3. img.alt='';
  4.  
  5. alert(img.height);
  6. alert(img.width);
  7. $('#photo').replaceWith(img);
[JAVASCRIPT] pobierz, plaintext



--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
drzalek
post
Post #6





Grupa: Zarejestrowani
Postów: 170
Pomógł: 18
Dołączył: 6.03.2007

Ostrzeżenie: (0%)
-----


Nie zrozumiałem za pierwszym razem o co Ci chodziło. Teraz w zasadzie działa, niestety zdarza się czasami - nie zawsze, że przy wczytaniu nowego zdjęcia zostaje jeszcze wysokość ze starego. Nie wiem czym może to być spowodowane.
Dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 05:01