【问题标题】:Change img src on click jquery点击 jquery 更改 img src
【发布时间】:2018-07-01 11:27:51
【问题描述】:

我有一个图片库,当我单击其中一个画廊项目时,会出现一个弹出窗口,每个项目都有不同的图片来源。我想让这个画廊动态化,所以当用户点击一个项目时,相应项目的图像应该显示在弹出窗口中。我希望这听起来不会令人困惑,这里有一张图片来说明我想说的话:

还有 HTML:

<div class="gallery__flex">
        <div class="gallery__item">
          <img src="img/gallery-1.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-2.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-3.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-4.jpeg" alt="" class="gallery__img">
        </div>
      </div>
      <div class="gallery__flex">
        <div class="gallery__item">
          <img src="img/gallery-5.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-6.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-7.jpeg" alt="" class="gallery__img">
        </div>
        <div class="gallery__item">
          <img src="img/gallery-8.jpeg" alt="" class="gallery__img">
        </div>

  <!-- popup window -->

    <div class="popup">
      <img src="img/gallery-1.jpeg" alt="" class="popup__img">
      <span class="popup__close-icon" id="closeIcon">&times;</span>
    </div>

如何使用 Jquery 做到这一点?

【问题讨论】:

    标签: jquery html


    【解决方案1】:

    你可以试试下面的代码,当你点击img它会弹出img

    $(document).ready(function(){
      
      
      $(".gallery__item>img").click(function(){
        var img = $(this).attr('src');
        $(".popup>img.popup__img").attr('src',img);
        $(".popup").show();
      });
      $("#closeIcon").click(function(){
        $(".popup").hide();
      });
      
    
    });
    .gallery__img{
      width:80px;
      height:80px;
      float:left;
    }
    
    .popup{
    margin-top:10px;
    width:100%;
    float:left;
    border:1px solid #ccc;
    padding:10px;
    box-sizing:border-box;
    position:relative;
    display:none;
    }
    .popup__img{
      width:80px;
      height:80px;
      left:0;
      right:0;
      top:0;
      display:block;
      margin:auto;
    }
    #closeIcon{
    position:absolute;
    right:0;
    top:0;
    z-index:1;
    font-size:18px;
    background:rgba(0,0,0,0.4);
    color:#fff;
    padding:2px;
    box-sizing:border-box;
    o
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <div class="gallery__flex">
            <div class="gallery__item">
              <img src="https://cdn2.tgdd.vn/Products/Images/42/166247/samsung-galaxy-a8-star-2018-600x600.jpg" alt="" class="gallery__img">
            </div>
            <div class="gallery__item">
              <img src="https://cdn1.tgdd.vn/Products/Images/42/155261/oppo-f7-bac-600x600.jpg" alt="" class="gallery__img">
            </div>
            <div class="gallery__item">
              <img src="https://cdn3.tgdd.vn/Products/Images/42/84798/samsung-galaxy-j7-prime-hh-600x600.jpg" alt="" class="gallery__img">
            </div>
            <div class="gallery__item">
              <img src="https://cdn.tgdd.vn/Products/Images/42/154260/huawei-nova-3e-2-600x600.jpg" alt="" class="gallery__img">
            </div>
          </div>
          <div class="gallery__flex">
            <div class="gallery__item">
              <img src="https://cdn2.tgdd.vn/Products/Images/42/177047/samsung-galaxy-s9-tim-1-600x600.jpg" alt="" class="gallery__img">
            </div>
           </div>
    
      <!-- popup window -->
    
        <div class="popup">
          <img src="img/gallery-1.jpeg" alt="" class="popup__img">
          <span class="popup__close-icon" id="closeIcon">&times;  </span>
        </div>

    【讨论】:

    • 非常感谢,这非常有效。现在你介意解释一下这段代码实际上做了什么$(".gallery__item&gt;img")
    • 发生的情况是您(在您的代码中)将点击事件附加到 &lt;div&gt; 元素。 div 没有“src”属性,因此您的代码不起作用。 $(".gallery__item&gt;img") 将点击事件附加到 div 内的图像,而不是 div 本身。
    • 哦,我明白了,这是有道理的。非常感谢您向我解释。
    【解决方案2】:

    我举了一个例子: https://codepen.io/dknacht/pen/dKaONp

    使用 $.prop 函数访问源属性并更改它。 如果你用点击事件绑定图片,那么src = $(this).prop("src")会返回源。
    您必须在弹出窗口中将图像的来源设置为$("idToImageInPopup").prop("src", src)

    $("img").click(function (){
      $("#imageDialog").prop("src", $(this).prop("src"))
      $("#dialog").dialog("open")
    });
    

    【讨论】:

    • 感谢您回复@Dknacht,这是我正在使用的代码,但它不起作用:// Popup open $('.gallery__item').click(function() { $('.popup').css({ 'opacity': '1', 'visibility': 'visible'}); $('body').css('overflow', 'hidden'); $(".popup").prop("src", $(this).prop("src")) })
    • $('.gallery__item').click( 替换为$('.gallery__item&gt;img').click( 以将点击事件附加到图像,而不是包含图像的div。发生的情况是您(在您的代码中)将点击事件附加到 &lt;div&gt; 元素。 div 没有“src”属性,因此您的代码不起作用。 $(".gallery__item&gt;img") 将点击事件附加到 div 内的图像,而不是 div 本身。
    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多