jquery toogle und Styleänderung

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe mir, da ich ja von JavaScript nicht so die Ahnung habe in den letzten 2 Stunden ein "Script" gebastelt was auch funktioniert - jedoch für meine Zwecke noch nicht optimal ist.
Mein Problem ist, dass ich das ganze toogle mit ändern des Stylsheets nicht nur für 3 sondern für knapp 40 Einträge brauche - und dann wird der Quellcode doch etwas unübersichtlich und fehleranfällig.

Das Ganze soll wie Ihre sehen könnt mehrere Punkt in der Farbe rot ausgeben und jeweils nur ein Element einblenden und beim klick auf ein anderes das vorherige wieder ausblenden. Ausserdem soll das jeweils eingeblendete Element (also der Link davon) die Farbe in grün ändern.

Folgendes habe ich:
HTML:
<!DOCTYPE HTML>
<html lang="de-DE">
<head>
	<meta charset="UTF-8">
	<title>toogle-Test</title>
	
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
	<script type="text/javascript">
	
$(document).ready(function() {
    
    $('#link1').click(function () {
        $('#eins').toggle('fast', function(){
            $('#zwei').hide('fast');
			$('#link2').css('color','red');
			$('#drei').hide('fast');
			$('#link3').css('color','red');
        });
		$('#link1').css('color','green');
    });    
    
    $('#link2').click(function () {
        $('#zwei').toggle('fast', function(){
            $('#eins').hide('fast');
			$('#link1').css('color','red');
			$('#drei').hide('fast');
			$('#link3').css('color','red');
        });
		$('#link2').css('color','green');
    });
	
	$('#link3').click(function () {
        $('#drei').toggle('fast', function(){
            $('#eins').hide('fast');
			$('#link1').css('color','red');
			$('#zwei').hide('fast');
			$('#link2').css('color','red');
        });
		$('#link3').css('color','green');
    });
 
});
	</script>
	
	<style type="text/css">
		.normal {
			color: red;
			text-decoration: none;
		}
		
		.hidden {
			display: none;
		}
	</style>

</head>
<body>
<div id="demo">
	<a href="#" id="link1" class="normal">Erster Punkt</a>
	<div id="eins" class="hidden">Das ist der Text zum ersten Punkt.</div><br>
	<a href="#" id="link2" class="normal">Zweiter Punkt</a>
	<div id="zwei" class="hidden">Das ist der Text zum zweiten Punkt</div><br>
	<a href="#" id="link3" class="normal">Dritter Punkt</a>
	<div id="drei" class="hidden">Das ist der Text zum dritten Punkt</div>
</div>

</body>
</html>

Meine Frage nun:
Kann ich das ganze kürzen sodass ich nicht für jede Eventualität einen eigenen Click-Event (sagt man das so) schreiben muss?

Was mir noch aufgefallen ist:
Wenn man einen geöffneten Link erneut klickt dann wird der toggle wieder geschlossen - die Farbe bleibt jedoch auf grün.
Kann man da auch noch entgegenwirken?

Vielen Dank für euere Hilfe im voraus!
 
Zuletzt bearbeitet:
@CPoly
Cool - das ist ja genial (auch das Tool in dem du das darstellst).
Ein kleines Problem habe ich noch mit dem Rand der beim klicken entsteht - da muss ich glaube ich was machen mit blur oder so******
 
Cool - das ist ja genial (auch das Tool in dem du das darstellst).

Ja, ich finde tinker.io viel besser als jsfiddle.net, welches bei mir ständig hing und langsam war. Außerdem hat es beim kopieren ständig den Code zerschossen.

Ein kleines Problem habe ich noch mit dem Rand der beim klicken entsteht - da muss ich glaube ich was machen mit blur oder so******

CSS:
outline:none

https://tinker.io/ef9b5/2

Oder du nimmst einfach keine Links, sondern z.B. <span>
 

Neue Beiträge

Zurück