login  Naam:   Wachtwoord: 
Registreer je!
 Forum

jQuery show() (Opgelost)

Offline Chilion - 03/02/2011 16:13
Avatar van ChilionMySQL interesse Dames en Heren,

Ik heb een index.php waar ik het volgende script in de head heb staan:

  1. $(document).ready(function(){
  2. $('.FAQ_Vraag').click(function () {
  3. $('.FAQ_Antwoord').hide("slow");
  4. $(this).next('.FAQ_Antwoord').show("slow");
  5. });
  6. });


Een andere pagina die ik include heeft deze code:
  1. <?php
  2.  
  3. class FAQ
  4. {
  5. public $content;
  6. public $page;
  7.  
  8. function __construct()
  9. {
  10. $this->page = (isset($_GET['page']) ? $_GET['page'] : 'home');
  11. $this->step();
  12. }
  13.  
  14. function step()
  15. {
  16. $sql = 'SELECT * FROM faq ORDER BY rang, id';
  17. $result = mysql_query($sql);
  18.  
  19. $this->content = '<table>';
  20.  
  21. while ($row = mysql_fetch_assoc($result))
  22. {
  23. $this->content .= ' <tr>
  24. <td><a class="FAQ_Vraag" ><b>'.ucfirst($row['title']).'</b></a></td>
  25. </tr>
  26. <tr>
  27. <td><p class="FAQ_Antwoord" style="display: none;" ><i>'.$row['answer'].'</i></p></td>
  28. </tr>
  29. <tr>
  30. <td>&nbsp;</td>
  31. </tr>';
  32. }
  33.  
  34. $this->content .= '</table>';
  35. }
  36. }
  37. ?>


De (relevante) code die gegenereert wordt als ik in de browser "bron weergeven" doe is dit:
  1. <div class="content">
  2.  
  3. <tr> <td>
  4. <a class="FAQ_Vraag" ><b>De facturen werden altijd automatisch geincasseerd; Nu niet meer. Hoe kan dat ?</b></a></td>
  5.  
  6. </tr>
  7. <tr>
  8. <td><p class="FAQ_Antwoord" style="display: none;" ><i> Blablabla</i></p> </td>
  9. </tr>


Nu is de bedoeling dat wanneer men op <a class="FAQ_Vraag"> klikt, <p class="FAQ_Antwoord"> zichtbaar wordt. Dat werkt nu echter niet.
Hoe kan dat?

6 antwoorden

Gesponsorde links
Offline Realtec - 03/02/2011 16:17 (laatste wijziging 03/02/2011 16:20)
Avatar van Realtec HTML interesse Ik ben dan niet zon pro in js maar ik denk dat je beter id kan pakken dan class in die link.
Een class kan vaker gebruikt worden en een id is uniek.

zoals dit:

<a href"#FAQ_<vraag>">

Edit: Maar dan kom je wel met een probleem te zitten met je functie want dan zul je voor elke vraag een functie moeten schrijven :/
Offline Chilion - 03/02/2011 16:19
Avatar van Chilion MySQL interesse ehm, dat zou dan mijns inzien <a id="#FAQ_Vraag"> worden. Daarnaast, er worden meer gemaakt dan 1 zoals je kunt zien in mijn PHP bestand, en dan is een classe beter heb ik altijd geleerd.
Offline Beirensg - 03/02/2011 16:34
Avatar van Beirensg HTML beginner het probleem zit hier:
  1. $(this).next('.FAQ_Antwoord').show("slow");

immers $('.FAQ_Antwoord') staat in de DOM niet op hetzelfde niveau van $('.FAQ_Vraag') (lees in dezelfde cel!)
Je kan best deze code vervangen door
  1. $(this).parent('td').parent('tr').next('tr').find('p.FAQ_Antwoord').show("slow");


Dit zou moeten werken (als ik geen foutje heb gemaakt natuurlijk )
Bedankt door: Chilion
Offline Chilion - 03/02/2011 16:41
Avatar van Chilion MySQL interesse Dat klopt inderdaad en het werkt, kun je me dat iets meer uitleggen?
Offline Beirensg - 03/02/2011 16:48
Avatar van Beirensg HTML beginner Next selecteert eigenlijk siblings van het element (hier is dat $('a.FAQ_Vraag')). Siblings zijn elementen van hetzelfde type (dus a) in dezelfde container, hier de cel (td) waarin de vraag staat.

Je structuur van de html komt hier niet mee overeen.
Je moet eerst de rij waarin de vraag staat vinden:$(this).parent('td').parent('tr')
En hiervan neem je de next rij (is het volgende element van hetzelfde type (tr) in dezelfde container (tabel)). Dit is de rij met het antwoord. Nu doe ik een simpele find in deze rij om het antwoord te vinden en te tonen.

Ik geef eerlijk toe, in het begin dat ik JQuery gebruikte moest ik soms ook ver zoeken. Maar oefening baart kunst, en ik moet zeggen dat het heel logisch ineenzit.
Bedankt door: Chilion
Offline Chilion - 03/02/2011 16:49
Avatar van Chilion MySQL interesse Ja oke, nu snap ik het tenminste ook. Bedankt!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.18s