javascript - 单击放大 img,再次单击最小化

标签 javascript jquery html css

我正在制作一个要求图片可点击的网站。如果您单击图像,它应该会放大并显示在屏幕中间。如果您随后再次单击,它应该再次变小并回到原来的位置。

$(document).ready(function() {
    $("#header").load("header.html .header");
    $("#footer").load("footer.html .footer");

    $("body").on('click', function(){

        if(!$(".img1, .img2").hasClass('enlarged')){

            $(".img1, .img2").on('click',function(){
                  $(this).addClass('enlarged');
            });
        }else{
            $("body").on('click', '.enlarged', function(){
                  $(this).removeClass('enlarged');
            });
        }

    });
});
.enlarged{
  position:absolute;
  z-index:2;
  width:500px;
  height:600px;
  top:-10%;
  left:300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container" class="container">
  <aside class="aside"><img src="fotos/foto1.JPG" id="img1" class="img1" style="transform:rotate(90deg);"/><img src="fotos/foto2.JPG" class="img2" style="transform:rotate(90deg);"/></aside>
  <div class="box"></div>
</div>

我当前的脚本有效,但非常不稳定。它只会放大一次,您必须连按三次。

我之前已经发过 question 了,但是我更新后没有人回答。

此外,我不确定如何在 Stack Overflow 上添加图片,否则我会制作一个片段。

最佳答案

您的点击处理程序实际上并没有执行您想要的逻辑,它只是分配其他点击处理程序。然后在进一步点击时,它们正在执行您想要的逻辑(某种程度上),而且还进一步分配更多点击处理程序。单击几下后,这将变得非常奇怪。

您只需要一个目标元素的点击处理程序:

$("body").on('click', '.img1, .img2', function(){

});

此处理程序将为页面上的任何 .img1.img2 调用。在此处理程序中,执行您的逻辑:

if (!$(this).hasClass('enlarged')) {
    $(this).addClass('enlarged');
} else {
    $(this).removeClass('enlarged');
}

或者,更简单:

$(this).toggleClass('enlarged');

关于javascript - 单击放大 img,再次单击最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785959/

相关文章:

javascript - 可选的链接逻辑

javascript - React 中的类变量与 ES6

javascript - 在结束 div 上停止侧边栏

c# - GridView 固定 header 溢出容器

javascript - 为什么jquery不检查复选框

javascript - 在 Javascript 中迭代变量

javascript - 如何使用 css 显示 :none 切换动画

javascript - HTML、jQuery、CSS - Width() 在页面加载时返回整个页面宽度而不是 div?

html - 我如何让我的图片和段落在我的页面屏幕中间

html - 我们可以将 CSS 用于仅比固定尺寸宽的图像吗?