javascript - 为什么这个 jQuery 动画只能工作一次?

标签 javascript jquery html css

我在网上寻找解决方案,但没有成功。我不明白为什么这段代码只触发一次:

$("#d").click(function() {
  var h = $(".cont");
  var f = h.offset();

  if (f.left < 1) {
    h.addClass('anim');
  } else {
    h.addClass('anim2');
  }
});
body{
  margin: 0;
}

#d {
  width: 50px;
  height: 50px;
  background: #999;
}

.cont {
  width: 200px;
  height: 200px;
  opacity: 1;
  background: #333;
  position: absolute;
  -webkit-transition: all 1s ease-in-out;
}

.anim {
  -webkit-transform: translate(50px, 0px);
}

.anim2 {
  -webkit-transform: translate(0px, 0px);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="d"></div>
<div class="cont"></div>

这是一个 JSFiddle demo .

最佳答案

你需要的是这个

  $("#d").click( function() { 
  var h = $(".cont");
  var f = h.offset();

  if (f.left < 1) {

    h.addClass('anim');
    h.removeClass('anim2');

    } else {

    h.addClass('anim2');
    h.removeClass('anim');
  }

});

第一次点击后你永远不会删除类,所以它们仍然有效

关于javascript - 为什么这个 jQuery 动画只能工作一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58793770/

相关文章:

javascript - 通过一个编辑按钮在两种表单之间切换

javascript - ||和 javascript 中的 onmessage

c# - 如何将元素的背景颜色与 2 个半透明元素背景颜色相匹配

html - 产品列表中的 block 元素

html - 当响应时将行断成 2 行(或更多)时,如何自动缩进文本?

jquery - 如何防止背景渐变从头开始?

javascript - 类比 htmls &lt;script src =""> xaml 标签

jquery - 如何使用jquery在多选列表中选择多个选项?

c# - 当从 View (Ajax)发送请求时,即使我使用 [FromBody] C#, Controller 中也收​​到 NULL 对象

javascript - 在 Javascript 中动画化 div 外观