我试图创建一个显示和隐藏div的功能,隐藏div用户可以使用关闭按钮或在div外单击,但问题是隐藏div的关闭功能如果用户点击div之外的元素首先运行之前我div显示:
HTML:
$('#close-add').on('click', function() {
$("#add-shipping-modal").hide();
});
$('#new-shipping').on('click', function() {
$("#add-shipping-modal").show();
});
$('body').click(function(event) {
setTimeout(
if (!$(event.target).closest('#add-shipping-modal').length && !$(event.target).is('#add-shipping-modal')) {
if ($("#add-shipping-modal").css('display') != 'none') {
$("#add-shipping-modal").hide();
}
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="new-shipping'">Open Div</button>
<div id="add-shipping-modal" style="display:none">
<button id="close-add">Close Div</button>
<p> Show Me </p>
</div>
当我点击#new-shipping按钮时,隐藏的div将不会显示,我猜是因为当我点击#new-shipping按钮时,它首先显示div然后触发body点击功能
4 回答
W3Schools已经提供了解决方案 .
点击这里:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_modal
Snippet
您在新发货后的代码中添加了 ' extra
应该
https://jsfiddle.net/bntnfhLm/
另外,请使用preventdefault / stopPropagation更改正文单击功能
试试这个
试试这个