Reputation:
Problem
My problem is that I'm trying to slideToggle()
a <div class='inputs'></div>
underneath the <h2></h2>
that was clicked on. Another thing is that I'm not getting any errors.
// MAIN
function main() {
$(".toggle-inputs").on("click", function() {
$(this).find('.inputs').slideToggle();
});
}
// LOAD
$(document).ready(main);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<section>
<div class="required">
<h3>* Required Fields</h3>
</div>
<div class="add-student">
<h2 class="toggle-inputs">Add Student <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="student-id" placeholder="* Student ID...">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="teacher-firstname" placeholder="* Teacher's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Teacher's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Student</button>
</div>
</div>
<!-- END OF ADD-STUDENT -->
<div class="add-teacher">
<h2 class="toggle-inputs">Add Teacher <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Teacher</button>
</div>
</div>
<!-- END OF ADD-TEACHER -->
<div class="add-driver">
<h2 class="toggle-inputs">Add Driver <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="lastname" placeholder="* Phone Number...">
<input type="text" name="lastname" placeholder="* Area Code...">
<input type="text" name="teacher-firstname" placeholder="* Leader's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Leader's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Driver</button>
</div>
</div>
<!-- END OF ADD-DRIVER -->
<div class="add-team">
<h2 class="toggle-inputs">Add Team <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<a href="JavaScript:void(0)">Add A Member</a>
<input type="text" name="student-id" placeholder="* Leader's ID...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Team</button>
</div>
</div>
<!-- END OF ADD-TEAM -->
</section>
<!-- END OF SECTION -->
</div>
<!-- END OF CONTAINER -->
Upvotes: 0
Views: 31
Reputation: 432
First, you need different selectors for each section. Like;
<h2 id="toggle-inputs-students">Add Student
And
<div id="inputs-students">
When it comes to JS part, you can use code below
$( "#toggle-inputs-students" ).click(function() {
$( "#inputs-students" ).slideToggle( "slow", function() {
// Animation complete.
});
});
Upvotes: 0
Reputation: 21575
The problem is .find()
is looking at the child elements of h2
which in this case is only a <i>
element so it doesn't find what it's looking for. Instead get the parent first so you are searching in <div class="inputs">
instead.
// MAIN
function main() {
$(".toggle-inputs").on("click", function() {
$(this).parent().find('.inputs').slideToggle();
});
}
// LOAD
$(document).ready(main);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<section>
<div class="required">
<h3>* Required Fields</h3>
</div>
<div class="add-student">
<h2 class="toggle-inputs">Add Student <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="student-id" placeholder="* Student ID...">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="teacher-firstname" placeholder="* Teacher's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Teacher's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Student</button>
</div>
</div>
<!-- END OF ADD-STUDENT -->
<div class="add-teacher">
<h2 class="toggle-inputs">Add Teacher <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Teacher</button>
</div>
</div>
<!-- END OF ADD-TEACHER -->
<div class="add-driver">
<h2 class="toggle-inputs">Add Driver <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="lastname" placeholder="* Phone Number...">
<input type="text" name="lastname" placeholder="* Area Code...">
<input type="text" name="teacher-firstname" placeholder="* Leader's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Leader's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Driver</button>
</div>
</div>
<!-- END OF ADD-DRIVER -->
<div class="add-team">
<h2 class="toggle-inputs">Add Team <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<a href="JavaScript:void(0)">Add A Member</a>
<input type="text" name="student-id" placeholder="* Leader's ID...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Team</button>
</div>
</div>
<!-- END OF ADD-TEAM -->
</section>
<!-- END OF SECTION -->
</div>
<!-- END OF CONTAINER -->
Upvotes: 0
Reputation:
The problem was that I had to use next()
instead of find()
.
// MAIN
function main() {
$(".toggle-inputs").on("click", function() {
$(this).next('.inputs').slideToggle();
});
}
// LOAD
$(document).ready(main);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<section>
<div class="required">
<h3>* Required Fields</h3>
</div>
<div class="add-student">
<h2 class="toggle-inputs">Add Student <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="student-id" placeholder="* Student ID...">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="teacher-firstname" placeholder="* Teacher's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Teacher's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Student</button>
</div>
</div>
<!-- END OF ADD-STUDENT -->
<div class="add-teacher">
<h2 class="toggle-inputs">Add Teacher <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Teacher</button>
</div>
</div>
<!-- END OF ADD-TEACHER -->
<div class="add-driver">
<h2 class="toggle-inputs">Add Driver <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<input type="text" name="firstname" placeholder="* Firstname...">
<input type="text" name="lastname" placeholder="* Lastname...">
<input type="text" name="lastname" placeholder="* Phone Number...">
<input type="text" name="lastname" placeholder="* Area Code...">
<input type="text" name="teacher-firstname" placeholder="* Leader's Firstname...">
<input type="text" name="teacher-lastname" placeholder="* Leader's Lastname...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Driver</button>
</div>
</div>
<!-- END OF ADD-DRIVER -->
<div class="add-team">
<h2 class="toggle-inputs">Add Team <i class="fa fa-caret-down" aria-hidden="true"></i></h2>
<div class="inputs">
<a href="JavaScript:void(0)">Add A Member</a>
<input type="text" name="student-id" placeholder="* Leader's ID...">
<button type="submit" name="add-student"><i class="fa fa-plus-circle" aria-hidden="true"></i> Add Team</button>
</div>
</div>
<!-- END OF ADD-TEAM -->
</section>
<!-- END OF SECTION -->
</div>
<!-- END OF CONTAINER -->
Upvotes: 1