繁体   English   中英

当用户点击模态窗口之外时,如何使用jquery关闭w3schools示例中的模态窗口?

[英]How to use jquery to close the modal window in the w3schools example when user clicks outside of modal window?

链接: http//www.w3schools.com/howto/tryit.asp?filename = tryhow_css_modal2

现有代码:

window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}

根据Jquery改变:

$(window).on('click', function(event){
    if(event.target == $('#myModal')){
        $('#myModal').css({display: "none"});
    }
});

事件正在解雇,但如果条件没有通过。 你能建议一下这样做吗?

关于闭合模态似乎是一个相同的问题,但我的问题是当用户点击模态的外部区域时关闭模态窗口。 如何通过单击模态窗口外部来关闭模态? 包含关于用户单击关闭按钮时关闭模态窗口的信息。 谢谢。

尝试匹配id而不是整个对象,比如

$(window).on('click', function(event){
    if(event.target.id == 'myModal'){
        $('#myModal').css({display: "none"});
    }
});

 // Get the button that opens the modal var btn = document.getElementById("myBtn"); var modal = document.getElementById('myModal'); // Get the <span> element that closes the modal var span = document.getElementsByClassName("close")[0]; // When the user clicks the button, open the modal btn.onclick = function() { modal.style.display = "block"; } // When the user clicks on <span> (x), close the modal span.onclick = function() { modal.style.display = "none"; } // When the user clicks anywhere outside of the modal, close it /*window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } }*/ $(window).on('click', function(event){ if(event.target.id == 'myModal'){ $('#myModal').css({display: "none"}); } }); 
 /* The Modal (background) */ .modal { display: none; /* Hidden by default */ position: fixed; /* Stay in place */ z-index: 1; /* Sit on top */ padding-top: 100px; /* Location of the box */ left: 0; top: 0; width: 100%; /* Full width */ height: 100%; /* Full height */ overflow: auto; /* Enable scroll if needed */ background-color: rgb(0,0,0); /* Fallback color */ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ } /* Modal Content */ .modal-content { position: relative; background-color: #fefefe; margin: auto; padding: 0; border: 1px solid #888; width: 80%; box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); -webkit-animation-name: animatetop; -webkit-animation-duration: 0.4s; animation-name: animatetop; animation-duration: 0.4s } /* Add Animation */ @-webkit-keyframes animatetop { from {top:-300px; opacity:0} to {top:0; opacity:1} } @keyframes animatetop { from {top:-300px; opacity:0} to {top:0; opacity:1} } /* The Close Button */ .close { color: white; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; } .modal-header { padding: 2px 16px; background-color: #5cb85c; color: white; } .modal-body {padding: 2px 16px;} .modal-footer { padding: 2px 16px; background-color: #5cb85c; color: white; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <h2>Animated Modal with Header and Footer</h2> <!-- Trigger/Open The Modal --> <button id="myBtn">Open Modal</button> <div id="myModal" class="modal"> <!-- Modal content --> <div class="modal-content"> <div class="modal-header"> <span class="close">×</span> <h2>Modal Header</h2> </div> <div class="modal-body"> <p>Some text in the Modal Body</p> <p>Some other text...</p> </div> <div class="modal-footer"> <h3>Modal Footer</h3> </div> </div> </div> 

请通过使用功能得到答案

$(window).on('click', function(event){
if(event.target.nodeName != 'BUTTON'
&& $('#myModal').css('display') == "block"){
    $('#myModal').css({display: "none"});
}
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM