Avatar billede Slettet bruger
10. marts 2011 - 09:09 Der er 8 kommentarer

jquery toggle div - med indhold fra database

Hej, dette simple toggle-script - hvordan kan jeg udvide det, så DIV'et kommer til at indeholde tekst fra min database - forstået på den måde, at det ikke loades, FØR man klikker på knappen? Sådan at jeg har en række overskrifter (også hentet fra database), og når jeg klikker på en overskrift, udvides DIV'et og viser så beskrivelsen, der hører til overskriften.


<html>
<head>
  <script src="http://code.jquery.com/jquery-1.5.js"></script>
</head>
<body>
  <button>Toggle my DIV</button><br>
  <div class="mybox" style="display:none;">
    This is my text!
  </div>
  Another text...
   
<script>
    $("button").click(function () {
      $('.mybox').slideToggle("slow");
    });
</script>

</body>
</html>
Avatar billede repox Seniormester
10. marts 2011 - 10:23 #1
Det bliver du nød til at gøre med AJAX. jQuery har også et AJAX API, så der kan du hente inspiration.
Avatar billede Slettet bruger
10. marts 2011 - 10:37 #2
Hej, sidder og roder med det - men ja, den toggle'r selvfølgelig ikke: Den henter bare data ind i mit div. Ville ønske man kunne åbne og lukke den...

function show_description(str)
{
if (str=="")
  {
  document.getElementById("desc"+str).innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("desc"+str).innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","faq_getinfo.php?q="+str,true);
xmlhttp.send();
}
</script>


Kan du pege mig i den rigtige retning - er hverken ajax el. jquery haj :-)
Avatar billede repox Seniormester
10. marts 2011 - 10:51 #3
I din oprindelige post bruger du jQuery - hvorfor bruger du så ikke også det til AJAX kaldet, istedet for at forsøge at lave noget som du allerede har tilgængeligt?
Avatar billede Slettet bruger
10. marts 2011 - 10:56 #4
Som sagt er jeg ikke haj til nogen af delene :-) Jeg bruger lige nu koden i #2 - koden i det oprindelige indlæg er bare noget jeg har fundet, der toggle'r, som jeg ønsker det :-)
Avatar billede kentora Nybegynder
10. marts 2011 - 11:19 #5
Brug koden i nummer 1 og ændrer du

<script>
    $("button").click(function () {
      $('.mybox').slideToggle("slow");
    });
</script>

til:

<script>
    $("button").click(function () {
      $.ajax({
        url: "test.html",
        success: function(html){
          $("#mybox").html(html);
        }
      });
      $('.mybox').slideToggle("slow");
    });
</script>

eller til den her, hvis boksen først skal åbne, når data er blevet hentet:

Brug koden i nummer 1 og ændrer du

<script>
    $("button").click(function () {
      $('.mybox').slideToggle("slow");
    });
</script>

til:

<script>
    $("button").click(function () {
      $.ajax({
        url: "side.php",
        success: function(data){
          $("#mybox").html(data);
        }
      });
      $('.mybox').slideToggle("slow");
    });
</script>

eller:



<script>
    $("button").click(function () {
      $.ajax({
        url: "side.php",
        success: function(data){
          $("#mybox").html(data);
          $('.mybox').slideToggle("slow");
        }
      });
    });
</script>

hvis boksen først skal åbne når du har hentet dine data.

Husk at ændre "side.php" til den side der henter de data ud du gerne vil have vist.
Avatar billede Slettet bruger
10. marts 2011 - 11:43 #6
Hej, den loader ikke min eksterne side ind i DIV'et?

<div class="mybox" style="display:none;">a</div>

- så viser den "a", men altså ikke resten...

Hvordan kan jeg i øvrigt klare flg. 2:
- ikke bruge en button, men bare et alm. tekst-link?
- bruge et ID, så indholdet af DIV'et er forskelligt alt efter hvilken overskrift man klikker

Tak for hjælpen!
Avatar billede Slettet bruger
10. marts 2011 - 11:55 #7
Hmm, jeg kæmper videre :-)

Tekstlink + åbn individuelle DIVs ud fra ID er på plads. Men den loader stadig ikke min side. Kan du se problemet der:

Link:
---
<a href='#' id='<?php echo $item_id; ?>' class='showdiv'><?php echo $item_title; ?></a><br><div class="mybox<?php echo $item_id; ?>" style="display:none;">a</div>
---


Kode:
---
<script>
$(".showdiv").click(function(){
 
    var element = $(this);
    var item_id = element.attr("id");
    var info = 'q=' + item_id + '';
 
  $.ajax({
    type: "GET",
    url: "fag_getinfo.php",
    data: info,
    success: function(data){
      $("#mybox' + item_id + '").html(data);
    }
  });
  $('.mybox' + item_id + '').slideToggle("slow");
});
</script>
---
Avatar billede Slettet bruger
10. marts 2011 - 12:07 #8
Hmm ja, ok, det kunne da gøres noget nemmere:

<script>
$(".showdiv").click(function(){
 
    var element = $(this);
    var item_id = element.attr("id");
 
  $('.mybox' + item_id + '').load('faq_getinfo.php?q=' + item_id + '').slideToggle("fast");
});
</script>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester