基于类名对元素进行动画处理(许多项目共享同一个类)



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

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>

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

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

$(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>

你可以这样使用:

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

相关内容

最新更新