Reputation: 937
I am using the JQuery collapsible menu for my application. I am using 4 collapsible areas in my application. Here I am showing only one section. How can I make this example appear for 4 areas of my application? What can I do to change my code for multiple areas?
Below is the given example. https://jsbin.com/ciloliweto/
How can I change this to make more than one collapsible areas?
Below is the multiple collapsible (two sections)
<div class="panel-group driving-license-settings" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"> </h4>
<div class="checkbox" id="testCheckBox">
<label data-target="#collapseOne">
<input type="checkbox"/> Header 01
</label>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
Content 1
</div>
</div>
</div>
</div>
</div>
<div class="panel-group driving-license-settings" id="accordion2">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"> </h4>
<div class="checkbox" id="testCheckBox2">
<label data-target="#collapseTwo">
<input type="checkbox"/> Header 02
</label>
</div>
</div>
<div id="collapseTwo" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
Content 2
</div>
</div>
</div>
</div>
</div>
Upvotes: 0
Views: 43
Reputation: 11622
If I got your question right, then you can use just use .parents() combined with .find() to select the collapsable elements near your input, Note that I added different IDs for panels
and <input>
,
here is a working snippet:
$('.collapse').collapse();
$("[type='checkbox']").bind('click dblclick', function(evt) {
if ($(this).is(":checked")) {
$(this).parents('.panel-group').find('.collapse').slideDown('fast');
} else {
$(this).parents('.panel-group').find('.collapse').slideUp('fast');
}
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
</head>
<body>
<div class="panel-group driving-license-settings" id="accordion0">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"> </h4>
<div class="checkbox" id="testCheckBox">
<label data-target="#collapseOne">
<input type="checkbox" /> I have Driver License
</label>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
<div class="checkbox">
<input type="checkbox" value="">A</div>
<div class="checkbox">
<input type="checkbox" value="">B</div>
<div class="checkbox">
<input type="checkbox" value="">C</div>
<div class="checkbox">
<input type="checkbox" value="">D</div>
<div class="checkbox">
<input type="checkbox" value="">E</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-group driving-license-settings" id="accordion1">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"> </h4>
<div class="checkbox" id="testCheckBox1">
<label data-target="#collapseOne">
<input type="checkbox" /> I have Driver License
</label>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
<div class="checkbox">
<input type="checkbox" value="">A</div>
<div class="checkbox">
<input type="checkbox" value="">B</div>
<div class="checkbox">
<input type="checkbox" value="">C</div>
<div class="checkbox">
<input type="checkbox" value="">D</div>
<div class="checkbox">
<input type="checkbox" value="">E</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-group driving-license-settings" id="accordion2">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"> </h4>
<div class="checkbox" id="testCheckBox2">
<label data-target="#collapseOne">
<input type="checkbox" /> I have Driver License
</label>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
<div class="checkbox">
<input type="checkbox" value="">A</div>
<div class="checkbox">
<input type="checkbox" value="">B</div>
<div class="checkbox">
<input type="checkbox" value="">C</div>
<div class="checkbox">
<input type="checkbox" value="">D</div>
<div class="checkbox">
<input type="checkbox" value="">E</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script>
</script>
</body>
</html>
Upvotes: 2
Reputation: 125
As far as I can understand your query, you need to show this collapsible menu either on 4 different pages or on 4 different places on the same page.
If it is so, then you can do this in a very simple way. What you can do is, you can assign 4 different id's or classes to all your 4 different menus and in the same jquery code, you can select the class and id's by "$" selector using "command".
e.g. $('.collapse, .collapse2, .collapse3, .collapse4').collapse();
$("#testCheckBox :checkbox, #testCheckBox2 :checkbox").bind('click
dblclick', function(evt) {
console.log(evt.type);
if ($(this).is(":checked")) {
$('.collapse').slideDown('fast');
} else {
$('.collapse').slideUp('fast');
}
})
But as your question is not elaborated in a sufficient way, so I can't give you the exact solution.
Upvotes: 0