2010-12-30 16 views
0

Ich habe durch die verwandten Fragen überprüft, aber ich habe nicht die richtige Kombination von Dingen gefunden, um diese Arbeit zu machen.jQuery toggle mehrere Divs in anderen divs unabhängig

Ich versuche, ein div in einem anderen div zu verstecken/zeigen. Es gibt 20 solcher Wrapper Divs pro Seite.

<div class="wrapper"> 
    <div class="date"></div> 
    <div class="subject"></div> 
    <div class="who"></div> 
    <div class="body"></div> 
</div> 

Ich versuche, das class = "body" div zu zeigen, das eingestellt ist: none; in CSS.

Ich habe versucht, die jQuery toggle(), toggleClass() -Funktionen mit keinem Erfolg.

Hier ist, was ich bisher habe.

$('.wrapper').click(function() { 
    $('.body').toggle(); 
}); 

Ich weiß, es ist ein sehr kleines Stück Code, leider habe ich gerade erst begonnen jQuery zu lernen und weiß nicht, wie von diesem gehen.

+0

das funktioniert, siehe meine Antwort, ich bin zu raten, etwas anderes auf. Stellen Sie sicher, dass Sie Ihr 'click' -Ereignis in' $ (function() {/ * code here * /}) einfügen; ' – hunter

Antwort

2

Haben Sie versucht, es in der onready Funktion setzen. Wie so:

$(function() { 
    $('.wrapper').click(function() { 
    $('.body').toggle(); 
    }); 
}); 

es in dieser Funktion Putting sorgt dafür, es wird ausgeführt, nachdem das Dokument vollständig geladen ist ... sonst wird es versuchen, den Click-Handler auf ein Element zu befestigen, die noch nicht geladen ist (und deshalb existiert nicht).

+0

Das Problem mit diesem Code ist, dass es alle Body-Divs umschalten wird, nicht nur das Body-Div im angeklickten Wrapper. – Dutchie432

+0

Oh, ich nahm an, dass nur einer zu einer Zeit zeigen würde. Ich weiß nicht, warum ich das vermutet habe. Sie wollen '$ (this) .find ('. Body'). Toggle();' anstelle von '$ ('. Body'). Toggle();'. –

+0

.... so wie ich unten gepostet :) – Dutchie432

0

Ich denke, Sie müssen auswählen, was Sie von einer anderen Klasse ausschalten möchten, wenn Sie es wieder ausblenden möchten. Schalten Sie die body Klasse wird es aus der div Sau entfernen, wenn Sie erneut auf die wrapper klicken, wird es nicht auswählbar sein.

<div class="wrapper"> 
    W 
    <div class="date">d</div> 
    <div class="subject">s</div> 
    <div class="who">w</div> 
    <div class="body isbody">b</div> 
</div> 

Und das javascript:

$('.wrapper').click(function() { 
    $(this).children('.isbody').toggleClass('body'); 
}); 

http://jsfiddle.net/vuBNd/

+0

Wie können Sie auf etwas klicken, das nicht sichtbar ist? – hunter

+0

haha ​​- realisierte und reparierte es Ich denke, – zsalzbank

+0

gut, das wird definitiv funktionieren 1 Mal seit Sie werden die '.body'-Klasse auf den ersten Klick – hunter

2

Überprüfen Sie meine JSFiddle (http://jsfiddle.net/XGsVE/3/). Dieser Code schaltet das BODY div des angeklickten WRAPPERS um. Das Weglassen der $(this) Ursachen alle Körper divs zu wechseln, trotz der Wrapper sie sind.

$('.wrapper').click(function() { 
    $(this).find('div.body').toggle(); 
}); 
+0

Danke für die Erklärung. Arbeitet wie gesagt, ich musste es nur in eine Funktion bringen, wie Nathan es vorgeschlagen hat. –

+0

Dann empfehle ich '$ (document) .ready (function() {...}) 'im Gegensatz zu nur' function() {...} ' – Dutchie432