Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] odkrywanie zawartosci strony
Forum PHP.pl > Forum > Po stronie przeglądarki
veyron
witam
mamy sobie taka strukture strony:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl-PL">
  3. <title>Strona z nieuporządkowaną listą</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
  5.  
  6. <style type="text/css">
  7. ul
  8. {
  9. list-style-type: none;
  10. }
  11. li.highlight
  12. {
  13. background: #000;
  14. color: #fff;
  15. }
  16. ul#lista li div.wiecej, ul#lista li div.wiecej2
  17. {
  18. display: none;
  19. }
  20.  
  21. ul#lista li h1, ul#lista li h2 {
  22. display: inline;
  23. }
  24.  
  25.  
  26. <!-- dodanie jQuery do dokumentu -->
  27. <script type="text/javascript" src="jquery-latest.js"></script>
  28.  
  29. <!-- Nasz kod java script: -->
  30.  
  31. <script type="text/javascript">
  32.  
  33. $(document).ready(
  34. function()
  35. {
  36. $("ul#lista li div.klik").click( function() { $(this).next("div.wiecej").toggle(); });
  37. });
  38.  
  39. </head>
  40. <ul id="lista">
  41.  
  42. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  43. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  44. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  45. </li>
  46.  
  47. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  48. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  49. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  50. </li>
  51.  
  52. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  53. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  54. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  55. </li>
  56.  
  57. </ul>
  58. </body>
  59. </html>

po kliknieciu diva o klasie klik, odkrywa sie tresc diva o klasie wiecej. div o klasie wiecej zawiera element np h2.
jak zrobic, zeby po kliknieciu elementu h2 "klik2" zjezdzala tresc diva o klasie wiecej2 ? czyli innymi slowy jak zagniezdzac dzialanie toggla ?
pozdrawiam.
piotrooo89
mając nazwy class rodziców/potomków przeszukujesz odpowiednią gałąź drzewa DOM.
veyron
Cytat(piotrooo89 @ 6.03.2010, 19:03:54 ) *
mając nazwy class rodziców/potomków przeszukujesz odpowiednią gałąź drzewa DOM.

przyznaje szczerze, ze jestem zielony, jesli chodzi o js, jquery, wobec czego poprosilbym o lopatologie z przykladami.
pozdrawiam.
piotrooo89
noo robisz to dokładnie w ten sam sposób:

  1. $("ul#lista li div.wiecej h2").click( function() { $(this).next("div.wiecej2").toggle(); });
veyron
Cytat(piotrooo89 @ 6.03.2010, 19:10:26 ) *
noo robisz to dokładnie w ten sam sposób:

  1. $("ul#lista li div.wiecej h2").click( function() { $(this).next("div.wiecej2").toggle(); });


no wlasnie tak probowalem i nie chce dzialac

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl-PL">
  3. <title>Strona z nieuporządkowaną listą</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
  5.  
  6. <style type="text/css">
  7. ul
  8. {
  9. list-style-type: none;
  10. }
  11. li.highlight
  12. {
  13. background: #000;
  14. color: #fff;
  15. }
  16. ul#lista li div.wiecej, ul#lista li div.wiecej2
  17. {
  18. display: none;
  19. }
  20.  
  21. ul#lista li h1, ul#lista li h2 {
  22. display: inline;
  23. }
  24.  
  25.  
  26. <!-- dodanie jQuery do dokumentu -->
  27. <script type="text/javascript" src="jquery-latest.js"></script>
  28.  
  29. <!-- Nasz kod java script: -->
  30.  
  31. <script type="text/javascript">
  32.  
  33. $(document).ready(
  34. function()
  35. {
  36. $("ul#lista li div.klik").click( function() { $(this).next("div.wiecej").toggle(); });
  37. $("ul#lista li div.wiecej h2").click( function() { $(this).next("div.wiecej2").toggle(); });
  38. });
  39.  
  40. </head>
  41. <ul id="lista">
  42.  
  43. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  44. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  45. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  46. </li>
  47.  
  48. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  49. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  50. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  51. </li>
  52.  
  53. <li><div class="klik"><h1>Nazwa 4</h1><h1>kraj</h1><h1>kod</h1><h1>miasto</h1><h1>ulica</h1></div>
  54. <div class="wiecej">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim<h2>klik2</h2> ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  55. <div class="wiecej2">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin vitae mi. Proin dignissim ligula vitae metus. Etiam imperdiet. Aenean nonummy lorem ut quam.</div>
  56. </li>
  57.  
  58. </ul>
  59. </body>
  60. </html>

thek
Dlatego, że h2 jest zagnieżdżony w div. Zauważ, że w Twoim przykładzie masz klasę klik i od razu odkrywasz diva będącego za nim. Tymczasem w 2 przypadku klikasz w h2, które jest wewnątrz jakiegoś div. Musisz więc nie tylko wskazać następny div, ale wpierw "powiedzieć", że to div względem rodzica h2. Czyli najprościej rzecz ujmując struktura typu $this -> rodzic -> next.
W wywołaniu
$("ul#lista li div.wiecej h2").click( function() { $(this).TUTAJ.next("div.wiecej2").toggle(); });
musisz więc w TUTAJ zrobić przejście do węzła rodzica i skrypt zadziała. Popatrz na coś takiego jak parent() smile.gif
veyron
Cytat(thek @ 8.03.2010, 08:25:12 ) *
Dlatego, że h2 jest zagnieżdżony w div. Zauważ, że w Twoim przykładzie masz klasę klik i od razu odkrywasz diva będącego za nim. Tymczasem w 2 przypadku klikasz w h2, które jest wewnątrz jakiegoś div. Musisz więc nie tylko wskazać następny div, ale wpierw "powiedzieć", że to div względem rodzica h2. Czyli najprościej rzecz ujmując struktura typu $this -> rodzic -> next.
W wywołaniu
$("ul#lista li div.wiecej h2").click( function() { $(this).TUTAJ.next("div.wiecej2").toggle(); });
musisz więc w TUTAJ zrobić przejście do węzła rodzica i skrypt zadziała. Popatrz na coś takiego jak parent() smile.gif

dzieki, udalo sie guitar.gif
pozdrawiam.
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.