简体   繁体   English

双击可关闭/打开div或在外部单击

[英]Toggle close / open div on double click or click outside

I have few div which is collapsed. 我只有几个div崩溃了。 On click of div of each element it display the collapsed content. 单击每个元素的div时,将显示折叠的内容。 On second click only on the same div it toggle class 'is-collapsed' and hide the element content. 仅在同一div上第二次单击时,它会切换类“已折叠”并隐藏元素内容。 What i need to do is to be able to close displayed content also when i click on one of the other div or somewhere outside. 我需要做的是当我单击另一个div之一或外部某处时也能够关闭显示的内容。

Not sure about the exact java script but take the part that is working for the toggle class. 不确定确切的Java脚本,但可以使用适用于toggle类的部分。

This is the code : 这是代码:

 /* collapse */ $('.filter-collapse .box-heading').live('click', function() { $(this).closest('.box').toggleClass('is-collapsed'); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="filters-collapse"> <div class="box sf-option sf-list sf-option-13 sf-multi is-collapsed"> <div class="box-heading">Sizes</div> <div class="box-content"> <ul class=""> <li><label><input type="checkbox" name="option[13]" value="49"><span class="sf-name">S (2)</span> </label></li> <li><label><input type="checkbox" name="option[13]" value="50"><span class="sf-name">M (1)</span> </label></li> </ul> </div> </div> <div class="box sf-option sf-list sf-option-14 sf-multi is-collapsed"> <div class="box-heading">Color</div> <div class="box-content"> <ul class=""> <li><label><input type="checkbox" name="option[14]" value="55"><span class="sf-name">White (2)</span> </label></li> <li><label><input type="checkbox" name="option[14]" value="54"><span class="sf-name">Red (1)</span> </label></li> <li><label><input type="checkbox" name="option[14]" value="53"><span class="sf-name">Black (1)</span> </label></li> </ul> </div> </div> </div> 

I suggest to use another event handler on the document, which adds the is-collapsed class to all collapsable elements - ignoring the box itself, if one was clicked. 我建议在文档上使用另一个事件处理程序,该事件处理程序将is-collapsed类添加到所有is-collapsed元素中-如果单击该框,则忽略框本身。

 /* collapse */ $(document).on("click", function(e) { // add collapsed to all boxes, besides a box itself was clicked. var currentTargetBox = $(e.target).closest('.filters-collapse .box'); $('.filters-collapse .box').not(currentTargetBox).addClass('is-collapsed'); }); $(document).on("click", '.filters-collapse .box-heading', function(e) { // toggle is-collapsed $(this).closest('.box').toggleClass('is-collapsed'); }); 
 .box.is-collapsed .box-content { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="filters-collapse"> <div class="box sf-option sf-list sf-option-13 sf-multi is-collapsed"> <div class="box-heading">Sizes</div> <div class="box-content"> <ul class=""> <li><label><input type="checkbox" name="option[13]" value="49"><span class="sf-name">S (2)</span> </label></li> <li><label><input type="checkbox" name="option[13]" value="50"><span class="sf-name">M (1)</span> </label></li> </ul> </div> </div> <div class="box sf-option sf-list sf-option-14 sf-multi is-collapsed"> <div class="box-heading">Color</div> <div class="box-content"> <ul class=""> <li><label><input type="checkbox" name="option[14]" value="55"><span class="sf-name">White (2)</span> </label></li> <li><label><input type="checkbox" name="option[14]" value="54"><span class="sf-name">Red (1)</span> </label></li> <li><label><input type="checkbox" name="option[14]" value="53"><span class="sf-name">Black (1)</span> </label></li> </ul> </div> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM