Элемент Animate на основе имени класса (многие элементы имеют один и тот же класс) - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть интернет-магазин, и мне необходимо добавить анимацию, которая перемещает изображение товара в корзину, когда пользователь нажимает «Добавить в корзину», проблема заключается в том, что когда я нажимаю «Добавить в корзину», анимация будетприменяется ко всем продуктам.

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 голосов
/ 19 сентября 2018

Вы можете использовать так:

$(document).ready(function(){
     $(".addToCart").click(function(){
        $(this).siblings('.proImage').animate({
             left: '250px',
         });
    });
});
0 голосов
/ 19 сентября 2018

Вы должны подойти к родителю и выбрать связанный 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>
...