I'm trying to create something like a web accordion.
Visual example:
[TITLE DIV 1]
[CONTENT DIV 1]
[TITLE DIV 2]
[CONTENT DIV 2]
[TITLE DIV 3]
[CONTENT DIV 3]
I want to be able to toggle (jquery function toggle()) a "Content Div" by clicking on the respective "Title Div".
I've tried the following, but it doesn't work.
HTML:
<div class="topSeparator"></div>
<div class="titleDiv">
<h1>Title 1</h1>
</div>
<div class="bottomSeparator"></div>
<div class="contentDiv"><h2>Content 1</h2></div>
<div class="topSeparator"></div>
<div class="titleDiv">
<h1>Title 2</h1>
</div>
<div class="bottomSeparator"></div>
<div class="contentDiv"><h2>Content 2</h2></div>
JQUERY:
$('.titleDiv').click(function() {
$(this).next('.contentDiv').toggle();
});
I would describe my function process as such:
1.1. Select that clicked element;
1.1.1. Select the next sibling of that clicked element with a class named "contentDiv";
1.1.1.1. Make the function toggle() act on this last element (With the class named "contentDiv");
It seems that I'm wrong or I'm missing something.
.
I'm including jquery 1.8.3 (Correctly).
This works when using ID's instead of classes (I'm trying to avoid using them).
I placed an alert inside the click function and it works (The problem is inside it).
Use .nextAll()
and :first
to get the next contentDiv
$(this).nextAll('.contentDiv:first').toggle();
Demo here http://jsfiddle.net/Cs3YY/1/