提问人:betty_ 提问时间:10/5/2022 更新时间:10/6/2022 访问量:57
使用 AJAX 仅更新目标元素
update only targeted element with ajax
问:
当有人增加或减少产品数量时,我正在尝试使用 ajax 更新我的购物车页面,我的视图逻辑很好。我可以推断出的问题是针对类“ajax_updater”,一旦我点击数量按钮 ajax 即可工作,但仅在特定产品上,它以相同类“.quantity-style”为目标的所有产品数量,并根据目标产品更改值,因此,如果产品 A 的数量在 ClickEvent 之后为 4, 产品 B、D、F 的数量也被定位并更改为 4,有什么解决方案?
{% for item in items %}
<div class="quantity">
<p id="quantity-style" class="quantity-style">{{item.quantity}}</p>
<div class="quantity-arrows">
<img data-product="{{item.product.id}}" class="ajax_updater" data-action="add" src="{% static 'shop/images/arrow-up.png' %}">
<img data-product="{{item.product.id}}" class="ajax_updater" data-action="remove" src="{% static 'shop/images/arrow-down.png' %}">
</div>
</div>
{% endfor %}
function update_arrow() {
$.ajaxSetup ({
cache: false
});
var spinner = '<i class="fas fa-circle-notch fa-spin" style="font-size:15px;" alt="loading" ></i>';
$(".quantity-style").html(spinner).load(update_quantity_url);
console.log(update_arrow_url);
}
$('.ajax_updater').click(function () {
update_arrow();
console.log('hit hit');
});
答:
1赞
Musa
10/6/2022
#1
您必须指定要更新的元素,一个简单的方法是在函数中传递要更新的元素。
function update_arrow(container) {
$.ajaxSetup ({
cache: false
});
var spinner = '<i class="fas fa-circle-notch fa-spin" style="font-size:15px;" alt="loading" ></i>';
container.find(".quantity-style").html(spinner).load(update_quantity_url);
console.log(update_arrow_url);
}
$('.ajax_updater').click(function () {
update_arrow($(this).closest('.quantity'));
console.log('hit hit');
});
评论
0赞
betty_
10/6/2022
使用您的方法,它以所选产品为目标,但是当我尝试在点击事件后更改不同产品的数量而不重新加载时,数据与初始目标产品而不是正确的产品匹配,知道发生了什么吗?
评论