[英]Issue with Show / Hide div - When clicking outside div to hide it, you need to click twice to show it again
[英]Show div on click on button, then hide this div when clicking outside of it
HTML
<div id="selectPeriodRangePanel">
<p>Test</p>
</div>
<button id="period_select_range_btn">Select Range</button>
JQUERY
$("#period_select_range_btn").off().on("click", function(){
$("#selectPeriodRangePanel").toggle();
});
当我单击按钮时,将打开selectPeriodRangePanel DIV
。 当我在它外面点击时,我想隐藏这个DIV
。
我怎样才能做到这一点 ?
试试这个
$(document).on("click", function(e){ if($(e.target).is("#period_select_range_btn")){ $("#selectPeriodRangePanel").show(); }else{ $("#selectPeriodRangePanel").hide(); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="selectPeriodRangePanel" style="display:none"> <p>Test</p> </div> <button id="period_select_range_btn">Select Range</button>
您可以为文档元素设置单击处理程序,如果单击发生在外部,则可以隐藏它。
$("#period_select_range_btn").off().on("click", function() { $("#selectPeriodRangePanel").toggle(); }); $(document).click(function(e) { if ($(e.target).closest('#selectPeriodRangePanel, #period_select_range_btn').length == 0) { $("#selectPeriodRangePanel").hide(); } })
body { min-height: 500px; background-color: lightblue; } #selectPeriodRangePanel { background-color: lightgrey; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="selectPeriodRangePanel"> <p>Test</p> </div> <button id="period_select_range_btn">Select Range</button>
我会这样做:
试试这个
$(document).on("click", function(e) { var el = $(e.target).closest("#selectPeriodRangePanel, #period_select_range_btn").length != 0; $("#selectPeriodRangePanel").toggle(el); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="selectPeriodRangePanel" style="display:none"> <p>Test</p> </div> <button id="period_select_range_btn">Select Range</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.