Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] dostęp do zmiennej obrazka
Forum PHP.pl > Forum > XML, AJAX
mercii
Witam
Mam spoty problem ponieważ jestem zielony z jQuery ale uparłem się na korzystanie z tego rozwiązania.
Robię galerię w formie karuzeli. Zmianę zdjęć obsługuję poprzez Jquery , działa fajnie. Pod każdym obrazem wczytuje jego różne wersje - też działa jquery.
  1. function onAfter() {
  2. var idphoto= this.alt;
  3. //wyświetlanie dużych zdjęć w karuzeli
  4. data ="idphoto=" + idphoto + "&funkcja=1";
  5. $.ajax({
  6. type: "POST",
  7. data: data,
  8. url: "response.php",
  9. success: function(response){
  10. $('#wersje').html(response)
  11. }
  12. });
  13.  
  14. //wyświetlanie miniatur wersji dla danego zdjęcia
  15. data2 ="idphoto=" + idphoto + "&funkcja=2";
  16. $.ajax({
  17. type: "POST",
  18. data: data2,
  19. url: "response.php",
  20. success: function(response){
  21. $('#opis').html(response)
  22. }
  23. });
  24.  
  25. }

a teraz próbuje zrobić funkcjonalność którą mi ciężko opisać: ale po krótce, po kliknięciu w jedną z miniatur która jest jedną z wersji duże zdjęcia wyświetlonego w karuzeli. Na dużej karuzeli zamiast zdjęć pojawią się same wersje zdjęcia, dla którego wybraliśmy wersje z miniatur.
Próbuje zrobić to w ten sposób:
  1. $('#pokazWersje').live("click", function(){
  2. alert(this.alt);
  3. var idphoto= this.alt; // tu nie przekazuje id :(
  4. data3 ="idphoto=" + idphoto +"&funkcja=3";
  5. $.ajax({
  6. complete:function(){location.reload()},
  7. type: "POST",
  8. data: data3,
  9. url: "response.php",
  10. success: function(response){
  11. $('#temp').html(response)
  12. }
  13. });
  14. });
  15.  

a tak wygląd część html z miniaturami z których chcę pobrać idphoto
  1. .. łączenie z bazą itd..
  2. echo '<td width="150px", align="center"><div id="pokazWersje"><img src="'.$link.'" width="80" height="80" alt="'.$idphoto.'" />'.$rodzaje.' </div></td>';


Z góry dziękuje za pomoc.
mortus
Element o identyfikatorze pokazWersje to nie obrazek (img), a kontener (div), który nie posiada atrybutu alt. Zresztą nie jestem do końca pewien, czy konieczne jest tutaj użycie identyfikatora i czy nie lepiej będzie skorzystać z klasy. W każdym bądź razie dostęp do atrybutu alt obrazka po kliknięciu w div możesz uzyskać tak:
[JAVASCRIPT] pobierz, plaintext
  1. var idphoto = this.find('img').attr('alt');
[JAVASCRIPT] pobierz, plaintext

Jeśli w tym div-ie będzie więcej obrazków, to niestety skrypt nie zadziała, bo nie wiadomo, który obrazek został kliknięty. Jeśli masz kilka takich div-ów pokazWersje, to jest to błąd składni HTML, bo w dokumencie może istnieć tylko jeden element o określonym id. Oczywiście ten błąd będzie skutkował błędnym działaniem skryptu JS. Może lepiej będzie przypisać zdarzenie 'click' obrazkowi:
[JAVASCRIPT] pobierz, plaintext
  1. $('img').live('click', function() {
  2. var idphoto = this.attr('alt');
  3. // reszta skryptu
  4. }
[JAVASCRIPT] pobierz, plaintext


Jeszcze innym błędem jest umieszczanie elementu blokowego <div> w komórce tabeli <td>, tego nie powinno się robić. No i po co te tabele?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.