【问题标题】:Show and hide image when clicked单击时显示和隐藏图像
【发布时间】:2017-04-05 16:28:40
【问题描述】:

我试图在单击图像的缩略图时显示图像。

这是我现在的代码:

$('.theme-preview').click(function() {

  console.log("fired");
  var previewPopup = $(this).children('.popup-preview');
  previewPopup.fadeIn("slow");

  previewPopup
    .css("position", "fixed")
    .css("top", ($(window).height() / 2) - ($(this).children('.popup-preview').outerHeight() / 2))
    .css("left", ($(window).width() / 2) - ($(this).children('.popup-preview').outerWidth() / 2));


  return false;

});

$('html').click(function() {
    $('.popup-preview').hide();
      return false;
 });
.popup-preview {
  background: black;
  position: absolute;
  z-index: 1;
  display: none;
}

.col-md-6 {
  float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div class="col-md-6 col-sm-6">
    <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-6.jpg">
      <div class="popup-preview">
        <div class="title">THEME 1-1</div>
        <img src="http://lorempixel.com/output/technics-q-c-240-180-6.jpg" width="100%">
        <div class="preview-btn">
          <a href="#"> <span>Preview</span></a>
        </div>
      </div>
    </div>

  </div>
  <div class="col-md-6 col-sm-6">
    <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-4.jpg">
      <div class="popup-preview">
        <div class="title">THEME 1-1</div>
        <img src="http://lorempixel.com/output/technics-q-c-240-180-4.jpg" width="100%">
        <div class="preview-btn">
          <a href="#"> <span>Preview</span></a>
        </div>
      </div>
    </div>
  </div>


  <div class="col-md-6 col-sm-6">
    <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-3.jpg">
      <div class="popup-preview">
        <div class="title">THEME 1-1</div>
        <img src="http://lorempixel.com/output/technics-q-c-240-180-3.jpg" width="100%">
        <div class="preview-btn">
          <a href="#"> <span>Preview</span></a>
        </div>
      </div>
    </div>
  </div>
  <div class="col-md-6 col-sm-6">
    <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-5.jpg">
      <div class="popup-preview">
        <div class="title">THEME 1-1</div>
        <img src="http://lorempixel.com/output/technics-q-c-240-180-5.jpg" width="100%">
        <div class="preview-btn">
          <a href="#"> <span>Preview</span></a>
        </div>
      </div>
    </div>
  </div>
</div>

单击任何缩略图时会显示图像。如果在它之外点击它会隐藏。

我要补充的是:

  • 当我单击父类(例如缩略图 #1)并显示较大的图像时,我想在再次单击父类(例如缩略图 #1)时隐藏大图像。以及其他缩略图。

  • 然后,当我单击缩略图#1 并显示较大的图像时,单击缩略图#2,缩略图#1 的大图像将隐藏,而缩略图#2 的较大图像将显示。其他缩略图也是如此。

注意:点击大图(本身)时,不应隐藏。

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    你可以试试这样的:

    逻辑:

    • 点击时,检查要显示的缩略图是否可见/
    • 如果是,请将其隐藏。
    • 如果没有,则隐藏任何其他缩略图并显示当前缩略图。

    $('.theme-preview').click(function() {
    
      var previewPopup = $(this).children('.popup-preview');
      if (previewPopup.is(":visible"))
        previewPopup.fadeOut("slow");
      else {
        $('.popup-preview:visible').fadeOut();
        previewPopup.fadeIn("slow");
    
        previewPopup
          .css({
            "position": "fixed",
            "top": ($(window).height() / 2) - (previewPopup.outerHeight() / 2),
            "left": ($(window).width() / 2) - (previewPopup.outerWidth() / 2)
          })
      }
      return false;
    });
    
    $('html').click(function() {
      $('.popup-preview').hide();
      return false;
    });
    
    $('.popup-preview').on("click", function(e){
      e.stopPropagation()
    })
    .popup-preview {
      background: black;
      position: absolute;
      z-index: 1;
      display: none;
    }
    
    .col-md-6 {
      float: left;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="row">
      <div class="col-md-6 col-sm-6">
        <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-6.jpg">
          <div class="popup-preview">
            <div class="title">THEME 1-1</div>
            <img src="http://lorempixel.com/output/technics-q-c-240-180-6.jpg" width="100%">
            <div class="preview-btn">
              <a href="#"> <span>Preview</span></a>
            </div>
          </div>
        </div>
      </div>
      <div class="col-md-6 col-sm-6">
        <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-4.jpg">
          <div class="popup-preview">
            <div class="title">THEME 1-1</div>
            <img src="http://lorempixel.com/output/technics-q-c-240-180-4.jpg" width="100%">
            <div class="preview-btn">
              <a href="#"> <span>Preview</span></a>
            </div>
          </div>
        </div>
      </div>
    
    
      <div class="col-md-6 col-sm-6">
        <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-3.jpg">
          <div class="popup-preview">
            <div class="title">THEME 1-1</div>
            <img src="http://lorempixel.com/output/technics-q-c-240-180-3.jpg" width="100%">
            <div class="preview-btn">
              <a href="#"> <span>Preview</span></a>
            </div>
          </div>
        </div>
      </div>
      <div class="col-md-6 col-sm-6">
        <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-5.jpg">
          <div class="popup-preview">
            <div class="title">THEME 1-1</div>
            <img src="http://lorempixel.com/output/technics-q-c-240-180-5.jpg" width="100%">
            <div class="preview-btn">
              <a href="#"> <span>Preview</span></a>
            </div>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      首先,您需要检查弹出窗口是否可见,如果是,则在用户单击其缩略图时隐藏它。如果不是,则隐藏任何打开的弹出窗口。如果弹出窗口可见并且用户单击其他弹出窗口,仍然关闭任何可见的弹出窗口并显示相应的弹出窗口。

      $('.theme-preview').click(function() {
      
        if($(this).children('.popup-preview').is(':visible')){
          $(this).children('.popup-preview').hide();
        }
        else{
          $('.popup-preview').hide();
        var previewPopup = $(this).children('.popup-preview');
        previewPopup.fadeIn();
         previewPopup
          .css("position", "fixed")
          .css("top", ($(window).height() / 2) - ($(this).children('.popup-preview').outerHeight() / 2))
          .css("left", ($(window).width() / 2) - ($(this).children('.popup-preview').outerWidth() / 2));
        }
        
       
      
      
        return false;
      
      });
      
      $('html').click(function() {
          $('.popup-preview').hide();
            return false;
       });
      .popup-preview {
        background: black;
        position: absolute;
        z-index: 1;
        display: none;
      }
      
      .col-md-6 {
        float: left;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="row">
        <div class="col-md-6 col-sm-6">
          <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-6.jpg">
            <div class="popup-preview">
              <div class="title">THEME 1-1</div>
              <img src="http://lorempixel.com/output/technics-q-c-240-180-6.jpg" width="100%">
              <div class="preview-btn">
                <a href="#"> <span>Preview</span></a>
              </div>
            </div>
          </div>
      
        </div>
        <div class="col-md-6 col-sm-6">
          <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-4.jpg">
            <div class="popup-preview">
              <div class="title">THEME 1-1</div>
              <img src="http://lorempixel.com/output/technics-q-c-240-180-4.jpg" width="100%">
              <div class="preview-btn">
                <a href="#"> <span>Preview</span></a>
              </div>
            </div>
          </div>
        </div>
      
      
        <div class="col-md-6 col-sm-6">
          <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-3.jpg">
            <div class="popup-preview">
              <div class="title">THEME 1-1</div>
              <img src="http://lorempixel.com/output/technics-q-c-240-180-3.jpg" width="100%">
              <div class="preview-btn">
                <a href="#"> <span>Preview</span></a>
              </div>
            </div>
          </div>
        </div>
        <div class="col-md-6 col-sm-6">
          <div class="theme-preview"><img class="img-responsive center-block" src="http://lorempixel.com/output/technics-q-c-140-80-5.jpg">
            <div class="popup-preview">
              <div class="title">THEME 1-1</div>
              <img src="http://lorempixel.com/output/technics-q-c-240-180-5.jpg" width="100%">
              <div class="preview-btn">
                <a href="#"> <span>Preview</span></a>
              </div>
            </div>
          </div>
        </div>
      </div>

      【讨论】:

      • 请添加说明。您正在为读者阅读,而不仅仅是 OP
      • 与@Rajesh 的回答太接近了。但他的回答和解释更清楚。
      • @c.k 没问题兄弟,我不是来参加任何比赛或比赛的,只是为了寻求帮助。
      猜你喜欢
      • 2016-02-02
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多