简体   繁体   English

我必须通过单击打开模式对话框 function (JQUERY 和 Bootstrap )不起作用

[英]I have to open modal dialog with on click function (JQUERY and Bootstrap ) not working

I have appended the images via javascript function and JQUERY, everything is working.But now i need to add "on click" event on every image.我已经通过 javascript function 和 JQUERY 附加了图像,一切正常。但是现在我需要在每个图像上添加“点击”事件。 When i click on some image there should the same photo but bigger with a modul dialog.当我点击一些图像时,应该有相同的照片但更大的模块对话框。 But it does not working.但它不起作用。 I do somehting wrong somewhere.我在某处做错了什么。 Tried with JQUERY "on click" function and as well with Bootstrap, but since give the appened images an ID which is taken from the array JSON object "title" property. Tried with JQUERY "on click" function and as well with Bootstrap, but since give the appened images an ID which is taken from the array JSON object "title" property. I was not sure how to refer to it.我不知道如何引用它。

 <div id="imageContainer"></div>

<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div id="myModal" class="modal">
            <span class="close">&times;</span>
            <img class="modal-content" id=img01>
            <div id="caption"></div>
        </div>
    </div>
 </div>

#imageContainer img {
    width: 30%;
    height: 250px;
    padding: 10px;
    border: 5px solid grey;


}

#myModal{
    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: 50%; /* Full width */
    height: 50%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
  }

  /* Modal Content (image) */
  .modal-content {
    margin: auto;
    display: block;
    width: 50%;
    max-width: 200px;
  }

  /* Caption of Modal Image */
  #caption {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
    text-align: center;
    color: #ccc;
    padding: 10px 0;
    height: 150px;
  }


(function (){
const arrayImg = [
        {
            filename: "20140222_131314",
            title:"img1",  

        },
        {
            filename:"20140712_203709",
            title:"img2",

        },
        {
            filename:"20190318_182928",
            title:"img3"
        },
        {
            filename:"20190422_181219",
            title:"img4"
        }
    ]
    for (let i = 0 ; i< arrayImg.length ; i++) {
        const arrImg = arrayImg[i]
        const imageContainer = $("#imageContainer");
        imageContainer.append(`<img id=${arrImg.title} src=photos/${arrImg.filename}.jpg>`);
    }
   /*
   array_img.forEach()
*/

}());

let modal = $('#myModal')
let modalImg = $('#img01')

let $img = $("#imageContainer img");
$img.click(function(test){
    $('.modal').css('display',"block");
    modalImg.src = this.src


    let span = document.getElementsByClassName("close")[0];
    span.onclick = function() { 
        $('.modal').css('display',"none");
    }

})
///OR 
let modal = document.getElementById('myModal')
let modalImg = document.getElementById('img01')

let img = document.getElementsByTagName(" img");

img.onclick = function(){
    modal.style.display = "block";
    modalImg.src = this.src;
    captionText.innerHTML = this.alt;
  }

But i am not sure that let modalImage is refered to correctly.但我不确定是否正确引用了let modalImage

You have this CSS rule:你有这个 CSS 规则:

#myModal{
    display:none;
}

also try control the modal visibility is JS with CSS clases and visibility, it's your error.也尝试控制模态可见性是带有 CSS 类和可见性的 JS,这是你的错误。 The behaviour to show and hide is automatic in bootstrap modal , please review documentation and examples as this: https://www.w3schools.com/bootstrap/bootstrap_modal.asp在引导模式中显示和隐藏的行为是自动的,请查看文档和示例,如下所示: https://www.w3schools.com/bootstrap/bootstrap_modal.asp

I made it like that and it works.我是这样做的,它可以工作。

<div id="myModal" class="modal">
  <span class="close">&times;</span>
  <img class="modal-content">
</div>

let $modal = $('.modal')
let $img = $("#imageContainer img");
$img.click(function(){
    $('.modal-content').attr('src', $(this).attr('src'));
    $modal.css('display', 'block')


    let $span = $(".close");
    $span.click(function() { 
        $('.modal').css('display',"none");
    })
 }) 

I have another issue similar to that and again i am stuck.我有另一个类似的问题,我又被卡住了。 If someone can show me my mistake, it will be great as i can NOT see it.如果有人能告诉我我的错误,那就太好了,因为我看不到它。

I have a image gallery again with every image in a separate <div> with same class name and i need to access the image on click and open a modal dialog with the selected image (bigger)我再次有一个图像库,每个图像都在一个单独的<div>中,具有相同的 class 名称,我需要在单击时访问图像并打开一个带有所选图像的模式对话框(更大)

<div id="imageContainer">
 <div class="imgBox">
  <img class="jsonImage" id="image_id_001" src="Photos/_DSC0150.jpg">
  <p>Title001</p>
</div>
<div class="imgBox">
  <img class="jsonImage" id="image_id_002" src="Photos/_DSC0226.jpg">
  <p>Title002</p>
</div>
 <div class="imgBox">
  <img class="jsonImage" id="image_id_001" src="Photos/_DSC0150.jpg">
  <p>Title001</p>
</div>
<div class="imgBox">
  <img class="jsonImage" id="image_id_002" src="Photos/_DSC0226.jpg">
  <p>Title002</p>
</div>
<div id="myModal" class="modal">
        <img id="current" class="modal-content" />
</div>

And part of my JS code for the modal Dialog:我的模态对话框的部分JS代码:

    const modal = $('#myModal'),
    let image = $('.imgBox img')
    image.click(function() {   
        modalContent.attr('src', $(this).attr('src'));
        modal.css('display', 'block');
        googleMap.css('display','none');

I keep getting message that `"image" is not a function'

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

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