login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dropdown DIV? (Opgelost)

Offline Chilion - 04/05/2010 14:43
Avatar van ChilionMySQL interesse Weet ik veel hoe ik het moet noemen,

Ik wil een FAQ pagina maken en ik wil dat op het moment dat iemand op de vraag klikt de rest naar beneden schuift en het antwoord te voorschijn komt. Klikt iemand op een andere vraag, vorige antwoord inschuiven, andere antwoord tevoorschijn komen.

Kan iemand me een link oid geven waarbij ik wat informatie kan opdoen hierover of kan iemand me een voorzetje geven?

Groeten,
Chilion

25 antwoorden

Gesponsorde links
Offline Berten - 04/05/2010 14:49
Avatar van Berten PHP beginner http://api.jquery.com/toggle/

Lees effe het stukje 'toggles all paragraphs'
Offline dieterke - 04/05/2010 14:54
Avatar van dieterke Nieuw lid je kan dit ook met css doen, elke keer onder de vraag het antwoord in een div zetten die je css waarde: display: none; meegeeft, als men op de vraag klikt kan je dmv javascript deze div naar display: block zetten
Offline Berten - 04/05/2010 14:57
Avatar van Berten PHP beginner
dieterke schreef:
je kan dit ook met css doen, elke keer onder de vraag het antwoord in een div zetten die je css waarde: display: none; meegeeft, als men op de vraag klikt kan je dmv javascript deze div naar display: block zetten


Enkel doet jquery met toggle dit aan en uitzetten automatisch voor je
Offline Chilion - 04/05/2010 15:42 (laatste wijziging 04/05/2010 15:44)
Avatar van Chilion MySQL interesse Bedankt beide, ik heb het even doorgelezen, en heb nu dit gemaakt.

  1. <?php
  2. while($row = mysqli_fetch_assoc($res))
  3. {
  4. //gegevens displayen
  5. <div class="paragraph">
  6. <h2>'.$row['question'].'</h2>
  7. <div class="text" >
  8. <p style="display: none;"><i>'.$row['anwser'].'</i></p>
  9. </div>
  10. </div>
  11. <script>
  12. $("h2").click(function () {
  13. $("p").toggle();
  14. });
  15.  
  16. </script>';
  17. }
  18. ?>




Het werkt nog niet helemaal goed. Ik zie de antwoorden niet meer, maar als ik klik op de 2de vraag komen alle antwoorden tevoorschijn. Dat moet niet.
Ik wil per klik dus maar 1 antwoord zien verschijnen
Offline dieterke - 04/05/2010 15:59
Avatar van dieterke Nieuw lid dan moet je aan u p-tag een id meegeven, en dan de jquery uitvoeren op het id, en niet op de volledige p-tag, anders neemt hij alle p-tags die er zijn, waardoor alles zichtbaar wordt
Offline Maarten - 04/05/2010 16:00
Avatar van Maarten Erelid Met $("p") selecteer je dan ook alle <p>-elementen.

http://api.jquery.com/category/selectors/
Offline Chilion - 04/05/2010 16:24
Avatar van Chilion MySQL interesse dus, zo? Want dit werkt dus niet 
  1. <div class="paragraph">
  2. <h2>'.$row['question'].'</h2>
  3. <div class="text" >
  4. <p style="display: none;" id="anwser"><i>'.$row['anwser'].'</i></p>
  5. </div>
  6. </div>
  7. <script>
  8. $("h2").click(function () {
  9. $("anwser").toggle();
  10. });
  11.  
  12. </script>';
  13. }
Offline dieterke - 04/05/2010 16:34
Avatar van dieterke Nieuw lid krijg je nu steeds hetzelfde of helemaal niets?
ik hoop op dat je nog altijd alles krijgt, want dat zou logisch zijn
Offline Chilion - 04/05/2010 16:36
Avatar van Chilion MySQL interesse Ik krijg dezelfde titels, maar er gebeurt niks meer :-)
Offline dieterke - 04/05/2010 16:38 (laatste wijziging 04/05/2010 16:47)
Avatar van dieterke Nieuw lid ik ken niet echt iets van jquery, wel van de rest, maar ik denk dat je voor answer een # moet zetten dus ("#answer")

als alles goed loopt krijg je nu hetzelfde probleem als daarnet, namelijk dat alles te voorschijn komt bij het klikken

dit komt omdat je verschillende id's moet uitdelen, dus dmv een teller ofzo kan je binnen je php code u p-element-id veranderen, bv "<p id='answer".$teller."'>" waardoor je elk p-element een uniek id meegeeft, hierop kan je dan gaan togglen
Offline Chilion - 04/05/2010 16:48
Avatar van Chilion MySQL interesse Lol, nu gaat, als ik op de onderste klik, de tekst van de bovenste displayen... 

Code:
  1. while($row = mysqli_fetch_assoc($res))
  2. {
  3. //gegevens displayen
  4. <div class="paragraph">
  5. <h2>'.$row['question'].'</h2>
  6. <div class="text" >
  7. <p style="display: none;" id="anwser"><i>'.$row['anwser'].'</i></p>
  8. </div>
  9. </div>
  10. <script>
  11. $("h2").click(function () {
  12. $("#anwser").toggle();
  13. });
  14.  
  15. </script>';
  16. }
Offline dieterke - 04/05/2010 16:49
Avatar van dieterke Nieuw lid aja, klopt, een id moet uniek zijn, dus gaat hij alleen de bovenste bekijken als p-element met answer als id, als je zoals mijn aangepaste post hierboven door middel van een teller echt unieke ids meegeeft is dit probleem normaal opgelost
Offline Chilion - 05/05/2010 08:02
Avatar van Chilion MySQL interesse Maar, hoe ga ik dan die javascript aangeven welke hij moet toggelen?
Offline vinTage - 05/05/2010 08:06 (laatste wijziging 05/05/2010 08:08)
Avatar van vinTage Nieuw lid in je while een tellertje mee laten lopen en die bij toevoegen aan het id van je div (en scriptje)

  1. $tellertje = 0;
  2. while(....)
  3. {
  4. <div id = $tellertje."_answer" ....>etc</div>
  5. ......
  6. $("#".$tellertje."_anwser").toggle();
  7. $tellertje ++;
  8. }
Offline Chilion - 05/05/2010 08:08
Avatar van Chilion MySQL interesse Op deze manier?
  1. while($row = mysqli_fetch_assoc($res))
  2. {
  3. //gegevens displayen
  4. <div class="paragraph">
  5. <h2>'.$row['question'].'</h2>
  6. <div class="text" >
  7. <p style="display: none;" id="ans'.$i.'"><i>'.$row['anwser'].'</i></p>
  8. </div>
  9. </div>
  10. <script>
  11. $("h2").click(function () {
  12. $("#anwser'.$i.'").toggle();
  13. });
  14.  
  15. </script>';
  16. $i++;
  17. }


Want dat werkt gewoon lekker niet ;P
Offline vinTage - 05/05/2010 08:11 (laatste wijziging 05/05/2010 08:12)
Avatar van vinTage Nieuw lid omdat $i undefined is zeker ?
en ans moet nog answer worden 
Bedankt door: Chilion
Offline Chilion - 05/05/2010 08:13 (laatste wijziging 05/05/2010 08:14)
Avatar van Chilion MySQL interesse Lol, $i is wel gedefined. Ans nog niet goed gedaan 

AAAAAAAAAAAA

Kijk hier maar ff wat het nu is: http://www.chilion.nl/komvoort/index.php?p=faq


Niet goed dus!
Code:

  1. $i = 0;
  2. //query fetchen
  3. while($row = mysqli_fetch_assoc($res))
  4. {
  5. //gegevens displayen
  6. <div class="paragraph">
  7. <h2>'.$row['question'].'</h2>
  8. <div class="text" >
  9. <p style="display: none;" id="ans'.$i.'"><i>'.$row['anwser'].'</i></p>
  10. </div>
  11. </div>
  12. <script>
  13. $("h2").click(function () {
  14. $("#ans'.$i.'").toggle();
  15. });
  16.  
  17. </script>';
  18. $i++;
  19. }
Offline vinTage - 05/05/2010 08:16
Avatar van vinTage Nieuw lid die h2 moet je ook uniek maken (een id dus ipv op alle h2 tags die code 
Offline Chilion - 05/05/2010 08:19
Avatar van Chilion MySQL interesse Top!

Nu wil ik eigenlijk nog dat wanneer een ander antwoord gedisplayed wordt, alle andere gesloten worden. Is dat nog iets wat handig kan?
Offline vinTage - 05/05/2010 08:28 (laatste wijziging 05/05/2010 08:28)
Avatar van vinTage Nieuw lid je kan beter gaan overwegen om een functie te maken die alles hide met een bepaalde classname en daarna open je bijbehorende tag weer.
Maar ik vind, dat als iemand iets geopend heeft, dat dat dan open moet blijven..
Offline Chilion - 05/05/2010 08:30
Avatar van Chilion MySQL interesse kun je me even voor de boeg schieten hoe ik alles ga sluiten dan?
Hier is het juist niet de bedoeling dat alles open blijft omdat je een enorme rij krijgt.
Offline vinTage - 05/05/2010 08:34
Avatar van vinTage Nieuw lid Als iemand klikt om iets open te zetten dan doen ze dat niet voor niks he, mss willen ze juist wel gewoon alles op een rijtje kunnen zien...je respecteert op jouw manier niet de wens van de bezoeker, maargoed.

  1. $('.classname').css('display', 'none');

Alles met de class "classname" gaat weg nu.
Offline Chilion - 05/05/2010 08:38 (laatste wijziging 05/05/2010 08:38)
Avatar van Chilion MySQL interesse hmm, er komt een knopje boven alle vragen waarbij de bezoeker ervoor kan kiezen om alle antwoorden te laten zien.
Nu heb ik deze code:

  1. <script>
  2. $("#h2t'.$i.'").click(function () {
  3. $('.hide').css('display', 'none');
  4. $("#ans'.$i.'").toggle();
  5.  
  6. });
  7.  
  8. </script>';


En krijg ik deze foutmelding op de lijn van css
Citaat:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/chilion/domains/chilion.nl/public_html/komvoort/inc/functions.inc.php on line 83
Offline vinTage - 05/05/2010 08:40
Avatar van vinTage Nieuw lid Moet je al die html maar niet echoen, dan wordt alles 100 keer overzichtelijker ook
Offline Chilion - 05/05/2010 08:43
Avatar van Chilion MySQL interesse Kheb em al, stomme quote's wrong used.

Tnx vinTage!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.272s