基于类名称的动画元素(许多项目共享同一类)

时间:2018-09-19 14:06:48

标签: javascript jquery jquery-animate

我有一个在线商店,每当用户单击“添加到购物车”时,我都需要添加一个将产品图像移动到购物车框中的动画,问题是每当我单击“添加到购物车”时,动画都会应用于所有产品。

HTML(这是一个项目的HTML,其他所有项目都相同):

$(document).ready(function() {
  $(".addToCart").click(function() {
    $(".proImage").animate({
      left: '250px',
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="items">
  <img src="#" class="proImage">
  <a href="#" class="btnorange addToCart">Add to Cart</a>
</div>

如何使动画仅应用于所选产品。

2 个答案:

答案 0 :(得分:1)

您应该转到父项,并使用img关键字和this方法选择相关的parent()

$(this).parent().find(".proImage").animate({
    left: '250px',
});

您也可以像这样使用closest()

$(this).closest('div').find(".proImage").animate({
    left: '250px',
});

在您的情况下,使用prev()方法将有两种作用:

$(this).prev(".proImage").animate({
  left: '250px',
});

$(document).ready(function() {
  $(".addToCart").click(function(e) {
    e.preventDefault();

    $(this).prev(".proImage").animate({
      left: '250px',
    });
  });
});
.proImage {
  position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="items">
  <img src="https://png.icons8.com/ios/2x/product.png" class="proImage">
  <a href="#" class="btnorange addToCart">Add to Cart</a>
</div>

<div class="items">
  <img src="https://png.icons8.com/ios/2x/product.png" class="proImage">
  <a href="#" class="btnorange addToCart">Add to Cart</a>
</div>

<div class="items">
  <img src="https://png.icons8.com/ios/2x/product.png" class="proImage">
  <a href="#" class="btnorange addToCart">Add to Cart</a>
</div>

答案 1 :(得分:0)

您可以这样使用:

$(document).ready(function(){
     $(".addToCart").click(function(){
        $(this).siblings('.proImage').animate({
             left: '250px',
         });
    });
});