【发布时间】:2017-12-07 09:41:36
【问题描述】:
我尝试创建一个显示和隐藏 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点击功能
【问题讨论】:
-
setTimeout 已关闭
-
不要使用 setTimeout,使用@vipin 回答!
-
替换 为 有一个额外的单一的 id属性
标签: javascript jquery html css