好的,所以我有一个简单的CSS样式模式,通过jScript点击按钮显示。这是jScript:
<script>
var modal = document.getElementById('myModal');
var btn = document.getElementById("myBtn");
var span = document.getElementsByClassName("close")[0];
btn.onclick = function() {
modal.style.display = "block";
}
span.onclick = function() {
modal.style.display = "none";
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
</script>
由于我在页面上会有很多这样的东西,所以在实际显示相应的模态之前,必须加载模态的内容(主要是大图片)。据我所知,我需要通过jQuery做到这一点,但我似乎无法找到任何好的代码片段。
提前致谢
答案 0 :(得分:1)
解决方法是在source
点击button
模式时设置图片show
。
您可以使用source
方法将图片javascript
设置为document.querySelector()
。
document.querySelector('.modal-content img').src=src;
或者,使用jquery
库,使用.attr()
方法。
$('.modal-content').find('img').attr('src',src);
var modal = document.getElementById('myModal');
var src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQxPY1VmPOqgQip3ku3TUrx5g_uryG63qlN9iDBaXkWkTrT466fqA";
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// 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";
//document.querySelector('.modal-content img').src=src;
$('.modal-content').find('img').attr('src',src);
}
// 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";
}
}
.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 {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
/* The Close Button */
.close {
color: #aaaaaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="myBtn">Open Modal</button>
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<img src=""/>
<span class="close">×</span>
<p>Some text in the Modal..</p>
</div>
</div>
<强>更新即可。有更多图像的解决方案。
var modal = document.getElementById('myModal');
var src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQxPY1VmPOqgQip3ku3TUrx5g_uryG63qlN9iDBaXkWkTrT466fqA";
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// 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";
$('.modal-content').find('img').each(function(){
$(this).remove();
});
for(i=0;i<100;i++){
$('.modal-content').append('<img src=""/>');
}
$('img').attr('src',src);
}
// 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";
}
}
.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 {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
/* The Close Button */
.close {
color: #aaaaaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="myBtn">Open Modal</button>
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close">×</span>
<p>Some text in the Modal..</p>
</div>
</div>
答案 1 :(得分:0)
这个问题有一个很好的插件,名为imagesLoaded by desandro:
https://github.com/desandro/imagesloaded
插件就像这样使用(GitHub页面上更好的文档):
$('#container').imagesLoaded( function() {
// images have loaded
});
此处还有jQuery demo,此处为vanilla JS demo。