.click仅适用于.css一次

时间:2015-12-10 18:44:47

标签: jquery carousel

我正在尝试制作自定义滑块。

我想要的: 每次我点击" .c-button"我想要" .belt"班级转移-290px。

发生了什么: " .belt"只翻译第一次点击,之后的每次点击都不做任何事情。帮助

$(".c-button").click(function() {
    $(".belt").css({"transform":"translateX(-290px)"});
  });

2 个答案:

答案 0 :(得分:2)

这不是CSS转换属性的工作方式。这会将当前变换设置为距元素通常所在位置的290个像素。

为了增加翻译量,您需要读取当前值,然后将其解析为整数,然后添加(减去)290像素,然后执行基于该值的翻译。

$(".belt").click(function(){
  var posX = parseInt($(".belt").css('transform').split(/,/)[4]);
  posX -= 290;
  console.log(posX);
  $(".belt").css('transform','translatex('+posX+'px)');
});

答案 1 :(得分:1)

正如Draco18s所提到的,你将元素的翻译相对于其原始位置转换了特定的数量。每次单击按钮时,转换都将设置为相同的值。您需要递增 translateX值。

一种方法是读取当前值并将其递增,如shown by Draco18s 另一种方法是将值存储在变量中,如shown by Miljan Puzović

另一种方法是使用CSS left而不是transform。您可以使用addition assignmentleft)运算符更轻松地增加+=的值,而无需存储或解析当前值。



$(".c-button").click(function() {
  $(".belt").css({
    "left": "+=20"
  });
});

.belt {
  position: relative;
  background-color: #F00;
  width: 1em;
  height: 1em;
  left: 0;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="belt"></div>
<button class="c-button">click</button>
<button class="c-button">click</button>
<button class="c-button">click</button>
&#13;
&#13;
&#13;