Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] dostęp do zmiennej obrazka
mercii
post 20.11.2011, 10:07:20
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


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.
Go to the top of the page
+Quote Post
mortus
post 20.11.2011, 10:39:21
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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?

Ten post edytował mortus 20.11.2011, 10:41:07
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:26