Ik las dat ik de vraag hier moest stellen en dat voor mijn robleem ik het beste met jquey kon werken.

Ik heb zelf nog nooit met deze taal gewerkt dus weet er weinig tot niets van af.

Ik heb het volgende waar ik tegen aan loop.
Drie knoppen langs elkaar. Daar onder een plaats waar wat content kan.

Ik begin met 3 knoppen zonder content. Als ik op 1 van de knoppen klik moet er content komen van de betreffende knop, klik ik op een andere knop dan komt er die content te staan. Klik ik nogmaals op de zelfde knop dan zou ik graag willen dat de content weer volledig verdwijnt.

Ik heb echt alles afgezocht maar niet gevonden waar ik naar opzoek ben. kan iemand mij aan een stukje code helpen waar ik mee verder kan.
Een accordion? n_n'
peter schreef op 29.11.2008 15:31
bedankt voor een reactie maar ik heb eens naar je link gekeken en het is totaal iets anders dan waar ik naar opezoek ben.

Btw je zegt: Je googled even naar de naam. Maar waar haal je die naam vandaan dan??


nou, dat filmpje heeft een naam/titel... en die titel heb ik gegoogled
Ok met jquery.
Zorg dus eerst dat je de jquery.js inlaadt.
Daarna maak je de volgende html.

<ul id="items">
	<li>
		<a class="dicht" href="#" title="Eerste item">Eerste item</a>
        <div>
        	Content 1e item
       	</div>
	</li>
	<li>
    	<a class="dicht" href="#" title="Tweede item">Tweede item</a>
        <div>
        	Content 2e item
       	</div>
    </li>
	<li>
    	<a class="dicht" href="#" title="Derde item">Derde item</a>
        <div>
        	Content 3e item
       	</div>
    </li>
</ul>


De volgende javascript zet je eronder of in de header

<script type="text/javascript">
$("#items div").hide();
						
// Eerste blok is zichtbaar en de link krijgt class=open
$("#items div:first").show();
$("#items a:first").addClass("open");
$("#items a:first").removeClass("dicht");

$("#items a").click( function()
{
    
	if ( $(this).hasClass("open") )
    {
        $(this).removeClass("open");
        $(this).addClass("dicht");
        $("div", this.parentNode).hide();
    }
    else
    {
        // Alle links met class open, krijgen de class dicht
        $("#items a.open").addClass("dicht");
        $("#items a.open").removeClass("open");
        
        // Alleen de link waar op is geklikt krijgt de class open
        $(this).removeClass("dicht");
        $(this).addClass("open");
        
        // Alle blokken worden ingeklapt
        $("#items div").hide();
        
        // Betreffende blok wordt uitgeklapt
        $("div", this.parentNode).show();
    }
});
</script>


Dit zorgt ervoor dat standaard de eerste open is en wanneer je een andere open klikt dat degene die open is, weer dicht gaat.
Ook heb ik classes toegevoegd zodat je met css de class open anders kan open dan de class dicht.
bedankt voor je hulp, het begint een beetje gĂȘnant te worden maar ik kom er nog steeds niet helemaal uit ik heb dit gedaan


Ik heb dit ingeladen http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.6.min.js


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Eerste item</title>

<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$("#items div").hide();
                        
// Eerste blok is zichtbaar en de link krijgt class=open
$("#items div:first").show();
$("#items a:first").addClass("open");
$("#items a:first").removeClass("dicht");

$("#items a").click( function()
{
    
    if ( $(this).hasClass("open") )
    {
        $(this).removeClass("open");
        $(this).addClass("dicht");
        $("div", this.parentNode).hide();
    }
    else
    {
        // Alle links met class open, krijgen de class dicht
        $("#items a.open").addClass("dicht");
        $("#items a.open").removeClass("open");
        
        // Alleen de link waar op is geklikt krijgt de class open
        $(this).removeClass("dicht");
        $(this).addClass("open");
        
        // Alle blokken worden ingeklapt
        $("#items div").hide();
        
        // Betreffende blok wordt uitgeklapt
        $("div", this.parentNode).show();
    }
});
</script>

</head>

<body>
<ul id="items">
    <li>
        <a class="dicht" href="#" title="Eerste item">Eerste item</a>
        <div>
            Content 1e item
           </div>
    </li>
    <li>
        <a class="dicht" href="#" title="Tweede item">Tweede item</a>
        <div>
            Content 2e item
           </div>
    </li>
    <li>
        <a class="dicht" href="#" title="Derde item">Derde item</a>
        <div>
            Content 3e item
           </div>
    </li>
</ul> 
</body>

</html>



Maar dan krijg ik het volgende

Eerste item
Content 1e item
Tweede item
Content 2e item
Derde item
Content 3e item

ik krijg dus alles te zien. doe ik iets fout?
Je hebt het script in je header.
Wat je dan even moet doen is het volgende om je javascript heen zetten

<script type="text/javascript">
$(function()
{

//je script die je er nu hebt staan

});
</script>

Dan gebruikt hij dit pas als de pagina is geladen. Wanneer je het script in de html onder je stukje html zet dan hoeft bovenstaande niet
hij werkt perfect. Ik weet dat ik lastg ben maar ik heb nog een klein vraagje is het mogelijk om de links langs elkaar te krijgen en dat de content in een ander tabel komt ??
Dan zou het script iets omgebouwd moeten worden. Dan moet je de links naast elkaar laten floaten.
Daaronder zet je de divs neer, waarvan je er dus maar een laat zien.
Met het klikken moet je dus de juiste div aanroepen.
Het script wat je nu hebt gebruikt (die van mij) roept deze div door te kijken naar de div indezelfde li als de link.

Ik heb er vanavond geen tijd meer voor om dit even om te bouwen (de Sint komt he :D)
Als je een beetje door hebt hoe deze jquery in elkaar zit, dan kun je het natuurlijk ook eerst zelf gaan proberen, volgens de volgende structuur

<ul class="tabs">
<li><a href="#1" title="Eerste item">Eerste item</a></li>
<li><a href="#2" title="Eerste item">Eerste item</a></li>
<li><a href="#3" title="Eerste item">Eerste item</a></li>
</ul>
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>


Of kijk ff op http://www.degraafschap.nl/ . Daar is dit ook zo toegepast.
Ik heb helaas nog geen flauw idee hoe de query werkt en hoe ik hem moet veranderen om tot de oplossing te komen, dus ik hoop hier wat hulp bij te krijgen.

ik zet hem maar weer eens boven in de lijst.
Je gebruikt jQuery, en om dit goed te laten lopen zet je al het javascript in een document ready.

Dus alles binnen de <script> </script> tag.

$(document).ready(function() {

// Hier je javascript code

#
});


Zie: http://snipplr.com/view/3739/jquery-showhide/
Als voorbeeld.

En hier nog een mooie tab:
http://docs.jquery.com/UI/Tabs

De code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <link rel="stylesheet" href="http://dev.jquery.com/view/tags/ui/latest/themes/flora/flora.all.css" type="text/css" media="screen" title="Flora (Default)">
  <script type="text/javascript" src="http://dev.jquery.com/view/tags/ui/latest/ui/ui.core.js"></script>
  <script type="text/javascript" src="http://dev.jquery.com/view/tags/ui/latest/ui/ui.tabs.js"></script>


  <script>
  $(document).ready(function(){
    $("#example > ul").tabs();
  });
  </script>
  
</head>
<body>
  
        <div id="example" class="flora">
            <ul>

                <li><a href="#fragment-1"><span>One</span></a></li>
                <li><a href="#fragment-2"><span>Two</span></a></li>
                <li><a href="#fragment-3"><span>Three</span></a></li>
            </ul>
            <div id="fragment-1">
                <p>First tab is active by default:</p>
                <pre><code>$('#example > ul').tabs();</code></pre>
            </div>
            <div id="fragment-2">
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
            </div>
            <div id="fragment-3">
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
            </div>
        </div>
</body>
</html>


Je ziet 3 links:

                <li><a href="#fragment-1"><span>One</span></a></li>
                <li><a href="#fragment-2"><span>Two</span></a></li>
                <li><a href="#fragment-3"><span>Three</span></a></li>

In de href staat de locatie. Deze locatie (achter de #) wordt de div's die daaronder staan bedoelt.


<div id="fragment-1">

Gewoon dezelfde naam. Makkelijker kan niet.

Reageren