I have the following code -
HTML -
<div id="new_results">
<div class="new_result">
<div class="new_result_header"><h3>Acura ILX</h3></div>
<div class="new_trim_dropdown"><p>Available Trims - <span>3</span></p>
<ul class="new_trim_values">
<li>4dr Sedan (2.0L 4cyl 5A) </li>
<li>4dr Sedan w/Premium Package (2.4L 4cyl 6M)</li>
<li>44dr Sedan w/Premium Package (2.0L 4cyl 5A)</li>
</ul>
</div>
</div>
<div class="new_result">
<div class="new_result_header"><h3>Acura ILX Hybrid</h3></div>
<div class="new_trim_dropdown"><p>Available Trims - <span>3</span></p>
<ul class="new_trim_values">
<li>4dr Sedan (2.0L 4cyl 5A) </li>
<li>4dr Sedan w/Premium Package (2.4L 4cyl 6M)</li>
<li>44dr Sedan w/Premium Package (2.0L 4cyl 5A)</li>
</ul>
</div>
</div>
<div class="new_result">
<div class="new_result_header"><h3>Acura MDX</h3></div>
<div class="new_trim_dropdown"><p>Available Trims - <span>3</span></p>
<ul class="new_trim_values">
<li>4dr Sedan (2.0L 4cyl 5A) </li>
<li>4dr Sedan w/Premium Package (2.4L 4cyl 6M)</li>
<li>44dr Sedan w/Premium Package (2.0L 4cyl 5A)</li>
</ul>
</div>
</div>
</div>
CSS -
.new_result
{
border:1px solid red;
margin-bottom:25px;
}
#new_results .new_trim_values
{
display:none;
}
jQuery -
<script type="text/javascript">
$(document).on("click", ".new_trim_dropdown", function(event){
if($(event.target).is($(this).children()))
{
$(this).children('.new_trim_values').toggle();
$(this).parents(".new_result").siblings(".new_result").find('.new_trim_values').hide();
}
});
</script>
Now at start all list items are hidden. When i click on "Available Trims - 3" then its corresponding list items will be toggled i.e. show and hide effect. Along with it, any other opened list items will be hidden if they are already opened. But i also want to hide any opened list items when we click off it i.e. if we click any part of document except the currently opened list div. How to do that? Demo is at -