我在点击外面时尝试关闭弹出窗口。
HTML
<span class="open"data-modal="modal1">Button</span>
<div class="modal" id="modal1">
<!--modal content-->
<div class="modal-content">
<!--close button-->
<span class="close">×</span>
<!--content-->
</div>
</div>
JS
$(document).ready( function() {
//open pop-up when span is clicked
$(".open").on("click", function() {
var modalId = $(this).data("modal");
var $modal = $("#" + modalId);
$modal.show();
});
//close pop-up when close button is clicked
$(".close").on("click", function() {
$(this).closest(".modal").hide();
});
$("body").click(function(){
$(".modal").hide();
});
// Prevent events from getting pass .popup
$(".modal-content").click(function(e){
e.stopPropagation();
});
});
在该代码块的底部,我在隐藏模态的主体上有一个单击功能,但如果单击modal-content
,则会触发e.stopPropagation();
。
但是,当我点击按钮打开弹出窗口时,由于$("body").click(function(){}
而无法打开。
有没有办法可以将$("body").click(function(){}
包裹起来:
if($('.modal').show == true{ ... });
答案 0 :(得分:2)
是的,你可以这样做:
$("body").click(function() {
if ($(".modal").is(":visible")) {
$(".modal").hide();
}
});
答案 1 :(得分:1)
您需要做的就是和以前一样,这是在点击open
按钮时停止传播:
//open pop-up when span is clicked
$(".open").on("click", function(e) { //with event now
e.stopPropagation(); //stopping propagation here
var modalId = $(this).data("modal");
var $modal = $("#" + modalId);
$modal.show();
});
这样它就不会调用hide()
点击处理程序上的body
。
答案 2 :(得分:0)
使用引导程序4,只需在外部单击即可关闭模式。
$('.modal').click(function (e) {
$('.modal').modal('toggle');
});