单击时展开图像

时间:2018-02-05 11:54:31

标签: javascript jquery

我有一个图片库,在图片上单击图像正在使用此代码进行扩展:

var quadimages = document.querySelectorAll("#quad img");
for(i=0; i<quadimages.length; i++) {
  quadimages[i].addEventListener('click', function(){ this.classList.toggle("expanded")}); 
}

这工作正常 - 当点击图库中的一个图像时,图像会扩展,但是如何将之前的图像扩展为恢复为默认尺寸?

<div id="quad">
  <img src="images/gallery/Homes/homes01.jpg">
  <img src="images/gallery/Homes/homes02.jpg">
  <img src="images/gallery/Homes/homes03.jpg">
  <img src="images/gallery/Homes/homes04.jpg">
</div>

3 个答案:

答案 0 :(得分:1)

  

但是如何才能使之前扩展的图像返回   这是默认大小

 quadimages[i].addEventListener('click', function(){ 
         $("#quad img").removeClass('expanded');
         this.classList.toggle("expanded")}); 

答案 1 :(得分:1)

对整个事物使用jquery(涉及重写一些工作代码):

var images = $("#quad img");
images.on('click', function() {
    images.removeClass('expanded');
    $(this).addClass('expanded');
});

不使用jquery(基于现有代码,并跟踪最后一个元素,而不是总是切换所有元素):

var quadimages = document.querySelectorAll("#quad img");
var lastClicked;
for(i=0; i<quadimages.length; i++) {
    quadimages[i].addEventListener('click', function(){
        this.classList.toggle("expanded");
        if (lastClicked) {
            lastClicked.classList.toggle('expanded');
        }
        lastClicked = this;
    });
}

另一个非jquery版本,在单击同一图像时行为略有不同

var quadimages = document.querySelectorAll("#quad img");
for(i=0; i<quadimages.length; i++) {
    quadimages[i].addEventListener('click', function(){
        var ex = document.querySelectorAll("#quad img.expanded");
        if (ex.length) {
            if (ex[0]!=this) {
                ex[0].classList.remove('expanded');
            }
        }
        this.classList.toggle("expanded");
    });
}

答案 2 :(得分:0)

var quadimages = document.querySelectorAll("#quad img");
for(i=0; i<quadimages.length; i++) {
  quadimages[i].addEventListener('click', function(){ 
  $('.expanded').removeClass('expanded');
  this.classList.toggle("expanded")}); 
}

试试这个,我希望它适用于你的情况。 :)