2013-08-05 3 views
6

Ich habe eine Liste mit 37 Links und 37 versteckte Divs mit etwas Text. Der Zähler beginnt mit 3 und endet mit 40. Was ich tun möchte, ist ein div anzuzeigen, wenn ich auf einen Link klicke und auch alle anderen divs verberge.Zeige ein div und verstecke andere beim Klicken auf einen Link

Verbindungen wie folgt aussehen:

<a href="#" rel="week_3">Week 3</a> 
<a href="#" rel="week_4">Week 4</a> 

Divs wie folgt aussehen:

<div id="week_3" style="display: none">[...]</div> 
<div id="week_4" style="display: none">[...]</div> 

Ich mag würde diese Aufgabe mit jQuery auszuführen. Was ich nicht tun kann, ist eine Schleife zu machen und zu überprüfen, ob einer dieser Links angeklickt wurde.

+0

es ein div zeigt in einer Zeit sein würde? Oder wenn der Benutzer auf drei Links klickt, möchten Sie, dass die entsprechenden 3 divs angezeigt werden, aber alle anderen bleiben verborgen? – lewis

+0

Ein div zu einer Zeit. Der Benutzer klickt auf den Link mit rel = "week_3" und div mit id = "week_3" wird angezeigt. – Psyche

Antwort

18

Etwas entlang der Linie:

$('a').on('click', function(){ 
    var target = $(this).attr('rel'); 
    $("#"+target).show().siblings("div").hide(); 
}); 

sollte es tun.

P.S: Ihre divs müssen in einem Container sein, damit dies funktioniert. Fiddle.

+0

Ich habe dies verwendet, aber ich habe die Vererbung für zusätzliche Sicherheit hinzugefügt, dass keine anderen Links auf dieser Seite betroffen wären. In meinem Fall 'Projektnotizkasten li a' – JGallardo

+0

Danke! Es funktionierte wie Charme. – Divyang

0

eine Sache

Ihre divs eine Klasse Geben so dass, wenn Sie auf einem Links klicken Sie diese bestimmte Klasse verstecken und dann durch Klick auf Link, um die gewünschte div zeigt

<div class="abc"></div> 
<div class="abc"></div> 
<div class="abc"></div> 

<a href="#" onClick="$('.abc').hide();"> 
3

versuchen Sie folgendes:

HTML:

<a class="link" href="#" data-rel="content1">Link 3</a> 
<a class="link" href="#" data-rel="content2">Link 4</a> 
<a class="link" href="#" data-rel="content3">Link 5</a> 
<a class="link" href="#" data-rel="content4">Link 6</a> 
<a class="link" href="#" data-rel="content5">Link 7</a> 

<div class="content-container"> 
    <div id="content3">This is the test content for part 3</div> 
    <div id="content4">This is the test content for part 4</div> 
    <div id="content5">This is the test content for part 5</div> 
    <div id="content6">This is the test content for part 6</div> 
    <div id="content7">This is the test content for part 7</div> 
</div> 

CSS:

.content-container { 
    position: relative; 
    width: 400px; 
    height: 400px; 
} 
.content-container div { 
    display: none; 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
} 

Script:

$(".link").click(function(e) { 
    e.preventDefault(); 
    $('.content-container div').fadeOut('slow'); 
    $('#' + $(this).data('rel')).fadeIn('slow'); 
}); 

Fiddle

1
$("a").each(function(index) { 
    var id = $(this).attr('rel'); 
    $('.data').hide(); 
    $('#'+id).show(); 
}); 
+0

war gerade dabei, etwas Ähnliches zu posten. So würde ich es machen.Hier ist die Geige, an der ich gearbeitet habe: http://jsfiddle.net/KNrNj/ aber das obige ist genau richtig. – lewis

0

haben einige gemeinsame Klasse für alle div s wie class='week' sagen. Und folgendes verwenden, um die erforderlichen Schritte auszuführen:

$("a[rel^='week']").on('click', function(){ 
    $("div.week").hide(); 
    var targetDiv = $(this).attr('rel'); 
    $("#"+targetDiv).show(); 

});

Verwandte Themen