Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Galeria - klikniecie na obrazek wywoluje nastepny
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam

Mam taki kod :

  1. if($_POST['gallery'] == 'yes') {
  2. $rows = $data->galleryKategory($_POST['kategory'],$_POST['dir']);
  3. $imgs = explode(', ', $rows[0]['img_dir']);
  4. $count = count($imgs);
  5. $width = $count*660;
  6. echo '<div id="gallery" class="gallery">'.
  7. '<div class="img_container" id="img_container" style="width:'.$width.'px;">';
  8. for($i=0; $i<$count; $i++) {
  9. echo '<img src="'.$imgs[$i].'" alt="na">';
  10. }
  11. echo '</div>'.
  12. '<a href="java script:; class="prev"></a>'.
  13. '<a href="java script:; class="next"></a>'.
  14. '</div>';
  15. }


Z grupsza wytlumacze o co chodzi zeby nie trzeba bylo sie meczyc (IMG:style_emoticons/default/winksmiley.jpg)

Wiec pobieram sobie ilosc obrazkow z bazy danych i na tej podstawie generowana jest ilosc znacznikow img o src ktore pochodzi z bazy danych, zawsze generuje sie kilka img.

No i teraz kod jQuery ktory po kliknieciu na obrazek powinien go przesuwac :

  1. //jQuery Doc
  2. //---------------------------
  3. //zmienne dla galerii
  4. $move_by = 660;
  5. $frame_left = 0;
  6. $frame_no = 1;
  7.  
  8. $(document).ready(function() {
  9.  
  10. //------------------------------------------
  11. // Obsluga galerii
  12. $max_clicks = $("#img_container").children.size;
  13.  
  14. $(".img_container img").live("click", function(){
  15. $new_frame_no = (($frame_no/1) + 1);
  16. $new_left = (($frame_left/1) + $move_by);
  17. $new_left_attr = $new_left + "px";
  18. if($new_frame_no < $max_clicks) {
  19. $("#img_container").animate({left: $new_left_attr}, 800);
  20. $frame_left = $new_frame_left;
  21. $frame_no = $new_frame_no;
  22. }
  23. });
  24. });


Jak widzimy w pierwszej linijce :
  1. $(".img_container img").click(function(){

Klikniecie na img powinno spowodowac wywolanie danego dzialania zawartego dalej w funkcji ale tak sie niestety nie dzieje.

Wszystkie obrazki laduja sie prawidlowo ale nie chca sie przesuwac......

Ten post edytował Wolfie 18.09.2009, 12:03:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wolfie
post
Post #2





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No i jeszcze jedna kwestia, z tego co dzisiaj czytalem to wychodzenie z DOM zalatwia funkcja live() wiec dlaczego mialbym uzywac $.ajax() z parametrem "script" zamiast load()?

-----------------------------------------------------------

Ok zrobilem tak :

  1. $("div.data a").live("click",function(){
  2. $.ajax({
  3. url: "gallery.php",
  4. type: "POST",
  5. data: ({'dir':$(this).parent('div.data').attr('rel'),
  6. 'kategory':$(this).parent('div.data').attr('value'),
  7. 'gallery':'yes'}),
  8. dataType: "script",
  9. success: function(msg){
  10. $( "#foto" ).html(msg).hide().fadeIn('slow');
  11. }
  12. });
  13. return false;
  14. });


No i wyszlo na to ze poprostu zamienilem funkcjie load() na ajax(), bo dzieje sie to samo co wczesniej, czyli wszystko sie ladnie laduje, ale po kliknieciu na div o id="foto" nic sie nie dzieje a powinny przesuwac sie zdjecia.

Czyli dzieje sie to samo co w przypadku tego :

  1. $("div.data a").live("click",function(){
  2. $('#foto').load('gallery.php', {
  3. 'dir':$(this).parent('div.data').attr('rel'),
  4. 'kategory':$(this).parent('div.data').attr('value'),
  5. 'gallery':'yes'}, function() {
  6. $(this).hide().fadeIn('slow');
  7. });


Moze jeszcze raz przedstawie kod do obslugi przesuwania sie zdjec, moze tu jest cos nie tak :

  1. //jQuery Doc
  2. //---------------------------
  3. //zmienne dla galerii
  4. var $move_by = 660;
  5. var $frame_left = 0;
  6. var $frame_no = 1;
  7.  
  8. $(document).ready(function() {
  9.  
  10. //------------------------------------------
  11. // Obsluga galerii
  12. $max_clicks = $("#img_container").children.size;
  13.  
  14. $("#foto").live("click", function(){
  15. var $new_frame_no = (($frame_no/1) + 1);
  16. var $new_left = (($frame_left/1) + $move_by);
  17. var $new_left_attr = $new_left + "px";
  18. if($new_frame_no < $max_clicks) {
  19. $("#img_container").animate({left: $new_left_attr}, 800);
  20. $frame_left = $new_frame_left;
  21. $frame_no = $new_frame_no;
  22. }
  23. });
  24. $(".img_container img").live("click", function(){
  25. $new_frame_no = (($frame_no/1) - 1);
  26. $new_left = (($frame_left/1) - $move_by);
  27. $new_left_attr = $new_left + "px";
  28. if($new_frame_no > 0) {
  29. $("#img_container").animate({left: $new_left_attr}, 800);
  30. $frame_left = $new_frame_left;
  31. $frame_no = $new_frame_no;
  32. }
  33. });


Jeszcze raz zamieszczam tez link do stronki, tym razem zamiast load() ladowanie jest obslugiwane przez ajax()

stronka jest tutaj,

Jeszcze dodam ze w przypadku gdy uzywam ajax() to wyskakuje mi taki blad w firebug :

Cytat
XML tag name mismatch (expected img)
[Break on this error] a"></div><a href="java script:;" class="p..."java script:;" class="next"></a></div> \n


A ja nadal nie rozumiem o co chodzi z tym wychodzeniem z DOM, moze tutaj jest jakis blad ?

Ten post edytował Wolfie 19.09.2009, 13:06:46
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 19:35