繁体   English   中英

添加和删​​除类不同的元素

[英]Add and remove class different elements

所以我目前正在学习jquery和动画的一点点tweenlite(我想保持基本)。 所以我现在正在建立一个投资组合网格,但我想添加一个元素的点击,其他元素正在淡入(从右边滑动并不重要)。

但是我找不到一种方法让它工作,1个元素有1个框来显示,而另一个元素有一个不同的框来显示而不是一遍又一遍地复制代码并且每次都改变一个简单的数字,必须有一个方法让它工作,而不是一遍又一遍地重复代码。

我创建了一个codepen来显示我的挣扎。

我希望我很清楚描述这个问题:)

HTML

  <div class="box">
    <div class="show">Show 1</div>
  </div>

  <div class="bigbox">
    <div class="removeit">
      <div class="bigshow">Bigshow 1</div>
    </div>
  </div>

  <div class="box">
    <div class="show">Show 2</div>
  </div>

  <div class="bigbox">
    <div class="removeit">
      <div class="bigshow">Bigshow 2</div>
    </div>
  </div>

</div>

CSS

.container {
  overflow: auto;
  margin: 0 auto;
  width:500px;
}

.box {
  height:200px;
  width:200px;
  background:yellow;
  text-align:center;
  cursor:pointer;
  margin:0 auto;
  float:left;
  margin-right:50px;
}

.bigbox {
  height:100%;
  width:100%;
  background-color: grey;
  z-index:100;
  left:0;
  opacity: 0;
  position: fixed;
  display:none;
  top:0;
  .removeit {
    height:100px;
    width: 100px;
    top: 0;
    right:0;
    background-color: blue;
    margin:0 auto;
    cursor:pointer;
  }
}

  .show {
    display:block;
  }
  .noscroll {
    overflow:hidden;
  }

使用Javascript

$(".box").click(function(){
    $(".bigbox").addClass("show");
    TweenLite.to($('.bigbox'), 0.5, {
        opacity:1,
        autoAlpha:1
    });
});

$(".removeit").click(function(){
    TweenLite.to($('.bigbox'), 0.5, {
        autoAlpha:0,
        opacity:0
    });
});

codepen

http://codepen.io/denniswegereef/pen/MwjOXP

正如我在评论中提到的,我认为通过找到boxbigbox之间的共同点以及我们是否不修改HTML是可能的。 这个共同点应该是各自类别的指数值。

  • 因此,首先在click处理程序中存储clickedIndex变量,如下所示: var clickedIndex=$('.box').index($(this));
  • 然后将这个clickedIndex提供给像这样的选择性bigboxvar bigbox=$(".bigbox").eq(clickedIndex);
  • 最后,使用此bigbox变量进一步淡入或淡出。

这是您修改过的JavaScript:

var bigbox = null;
var clickedIndex = -1;
var boxElements=$(".box");
var bigboxElements=$(".bigbox");
var removeItElements=$(".removeit");
boxElements.click(function() {
  clickedIndex = boxElements.index($(this));
  bigbox = bigboxElements.eq(clickedIndex);
  bigbox.addClass("show");
  TweenLite.to(bigbox, 0.5, {opacity: 1,autoAlpha: 1});
});

removeItElements.click(function() {
  clickedIndex = removeItElements.index($(this));
  bigbox = bigboxElements.eq(clickedIndex);
  TweenLite.to(bigbox, 0.5, {autoAlpha: 0,opacity: 0});
});

这种方法的唯一问题是它非常依赖于HTML的布局顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM