Autor Zpráva
jefitto44
Profil
Využívam jednoduchý slidedown zobrazovač divka s display:none.

 <script type="text/javascript">
      function showFaq() {
    $(".question").click(function() {
      $(this).next("div").slideDown();
    });
  }
    </script>

Problém je ten, že na daný div musím kliknúť dvakrát, aby sa to spustilo. Divka sa vypisujú v cykle pod sebou a vyzerá to asi takto
while($row=mysql_fetch_assoc($query)) {
          echo '<li><div class="question" onclick="showFaq()">'.$row["question"].'</div>';
          echo '<div class="answer">'.$row["answer"].'</div></li>';
        }

Funguje to tak, že ak kliknem na div.question prvýkrát, nič sa nestane. Ak kliknem druhýkrát, už to ide tak ako má... vie niekto, kde môže byť zadrheľ? Chyby, ani upozornenia nie sú
pcmanik
Profil
jefitto44:
Prvý krát priradíš udalosť onclick. Pri druhom kliknutí sa až spustí, stačí funkciu showFaq() upraviť takto:
function showFaq() {
    $(this).next("div").slideDown();
}
Alebo môžeš úplne vyhodiť ten onclick="showFaq()" z html kódu a taktiež zrušiť tú funkciu a len napísať.
$(".question").click(function() {
      $(this).next("div").slideDown();
});
Avšak ten JS kód musí byť potom umiestnený na konci stránky, alebo obalený v $(document).ready()
jefitto44
Profil
Takže funguje to, som ti zaviazaný... teraz keď potrebujem, aby sa to pri ďalšom kliku zatvorilo (slide up) Ako na to? Teraz je onclick vyhodený a vyzerá to takto

<script type="text/javascript">
    $(document).ready( function () {
        $(".question").click(function() {
        $(this).next("div").slideDown();
        });
    })     
    </script>
pcmanik
Profil
jefitto44:
Namiesto slideDown stačí použit slideToggle()
jefitto44
Profil
Presne to som predchvíľou skúšal, len som napísal toogle, nie toggle :D Diky za pomoc

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: