<script>
$(".image-popup").on('click', function() {
$(this).find(".myModal").addClass("modal-active");
$(".modal-active").css("display", "block");
});
$(".close").on('click', function() {
$(".modal-active").css("display", "none");
var myVar = $(this).closest(".image-popup");
myVar.find(".myModal").removeClass("modal-active");
$(".modal-active").css("display","none");
});
</script>
我试图让模态出现,然后在单击关闭按钮时消失。问题是removeClass()不起作用,“display”,“none”不会覆盖第一个单击功能。任何帮助?
答案 0 :(得分:0)
我的猜测从您的问题和上面的评论来看,您的第二个处理程序中的事件正在冒泡到您的第一个处理程序:
$(".image-popup").on('click', function() {
$(this).find(".myModal")
.addClass("modal-active")
.show();
});
$(".close").on('click', function(evt) {
evt.preventDefault();
$(this).closest(".image-popup")
.find(".myModal")
.removeClass("modal-active");
.hide();
});
尝试使用.close
evt.preventDefault();
处理程序
答案 1 :(得分:0)
您可以使用这个简单的解决方案来修复它:
<强> HTML 强>
<div class="image-popup">
<div class="show-modal btn btn-success">Show Modal</div>
<div class="myModal">
<div class="close btn btn-success">Close</div>
<p>My Modal is active</p>
</div>
</div>
<强> CSS 强>
.modal-active .myModal{
display: block;
}
.myModal{
display:none;
}
.close{
color:red;
display:block;
}
<强> JS 强>
$(function(){
$('.show-modal').click(function(){
$(this).parent().addClass('modal-active');
});
$('.close').click(function(){
$(this).closest('.image-popup').removeClass('modal-active');
});
});
,请参阅此小提琴