簡體   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