简体   繁体   English

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

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

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

existing code: 现有代码:

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

changed as per Jquery: 根据Jquery改变:

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

event is firing, but if condition is not passing. 事件正在解雇,但如果条件没有通过。 Can you suggest the way to do it. 你能建议一下这样做吗?

It seems a same question about closing modal, but my question asked about closing the modal window when user clicked on outside area of modal. 关于闭合模态似乎是一个相同的问题,但我的问题是当用户点击模态的外部区域时关闭模态窗口。 How to close a modal by clicking outside the modal window? 如何通过单击模态窗口外部来关闭模态? contains about closing modal window when user clicks on close button. 包含关于用户单击关闭按钮时关闭模态窗口的信息。 Thankyou. 谢谢。

Try to match id instead of whole object like, 尝试匹配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> 

please i am getting answer by using function 请通过使用功能得到答案

$(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