How to use bootstrap modal on multiple images on same page on image click?

后端 未结 4 1136
夕颜
夕颜 2020-12-21 10:39

I have about 18 images on the page that I am trying to display larger in a modal upon clicking the image, but it only displays the first image every time.

I have tri

相关标签:
4条回答
  • 2020-12-21 11:24

    You are very close to your goal, you have 2 images

    <img height="100" width="80" id="1" data-toggle="modal" data-target="#myModal" src='http://tympanus.net/Tutorials/CaptionHoverEffects/images/1.png' alt='Text dollar code part one.' />
    <img height="100" width="80" id="2" data-toggle="modal" data-target="#myModal" src='http://tympanus.net/Tutorials/CaptionHoverEffects/images/2.png' alt='Text dollar code part one.' />
    

    One Modal

    <div id="myModal" class="modal fade" role="dialog">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-body">
                    <img class="img-responsive" src="" />
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>
    

    If you want to show image in modal with your approach using click function

    $(document).ready(function () {
        $('img').on('click', function () {
            var image = $(this).attr('src');
            $('#myModal').on('show.bs.modal', function () {
                $(".img-responsive").attr("src", image);
            });
        });
    });
    

    Fiddle


    Or you can use bootstrap modal event function only, less complicated and better approach (recommended solution)

    $(document).ready(function () {
            $('#myModal').on('show.bs.modal', function (e) {
                var image = $(e.relatedTarget).attr('src');
                $(".img-responsive").attr("src", image);
            });
    });
    

    Fiddle

    0 讨论(0)
  • 2020-12-21 11:25

    You mean you have 18 images, when you click on a image , website will open a open to show a larger image?

    So why don't you use another plugin such as Nivo lightbox, which allow you open a popup to show image, and even though put all your image in a gallery when open a popup

    0 讨论(0)
  • 2020-12-21 11:25

    I am learning English, so I'm not sure if I fully understand but if you want is show different images in a modal by clicking on each thumbnail image. I think that this code can help you.

    here is an Jsfiddle example: How to show multiple images on the same modal

    And the code:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="bootstrap.css">
        <script type="text/javascript" src="jquery-1.11.2.js"></script>
        <script type="text/javascript" src="bootstrap.js"></script>
        <style type="text/css">
          .my-img a {
            display: inline-block;
            margin: 10px;
            border: 2px solid #CCC;
          }
          .my-img a:hover {
            border: 2px solid #45AFFF;
          }    
          .modal-lg {
            width: 86%;
          }
          .modal-body {
            overflow: auto;
            max-height: auto;
          }
        </style>
    </head>
    <body>
    
    <div class="container">
      <h2>Modal Example</h2>
      <!-- Trigger the modal with a button -->
      <div class="row">
        <div class="col-xs-12 my-img">
          <a href="#" id="link1" data-toggle="modal" data-target="#myModal">
            <img src="1.png" id="img1" class="img-responsive" width="250px">
          </a>
          <a href="#" id="link1" data-toggle="modal" data-target="#myModal">
            <img src="2.png" id="img2" class="img-responsive" width="250px">
          </a>
          <a href="#" id="link1" data-toggle="modal" data-target="#myModal">
            <img src="3.png" id="img3" class="img-responsive" width="250px">
          </a>
          <a href="#" id="link1" data-toggle="modal" data-target="#myModal">
            <img src="4.png" id="img4" class="img-responsive" width="250px">
          </a>          
      </div>  
    
      <!-- Modal -->
      <div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog modal-lg">
    
          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">your image title here (can be dynamic) </h4>
            </div>
            <div class="modal-body" id="showImg">
    
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
          </div>
    
        </div>
      </div>
    
    </div>
    <script type="text/javascript">
          $(document).ready(function() {
            $('img').on('click', function() {
              $("#showImg").empty();
              var image = $(this).attr("src");
              $("#showImg").append("<img class='img-responsive' src='" + image + "' />")
              //alert(image);
            })
          });
    </script>
    
    </body>
    </html>
    
    0 讨论(0)
  • 2020-12-21 11:27

    It is Work Fine For Normal image Path But I have base64 image so not work this javascript.

    <img src="<?php echo 'data:image/'.$imageFileType.';base64,'.$fetch_expance['expance_image'];?>" style="cursor: pointer;" data-toggle="modal" data-target="#myModal" width="100px" height="100px" /><br>
    
    0 讨论(0)
提交回复
热议问题