【发布时间】:2015-12-19 14:53:16
【问题描述】:
我在产品页面上有一个 Ajax 订单。当您单击#submit-table 按钮时,它将显示一个下拉菜单,其中显示更新的购物车信息,包括更新的数量和价格以及刚刚添加的产品。
这是我的问题的图片(应该只显示绿色的正确项目):
到目前为止,这是我的代码,但它触发了两次,从而复制了产品,这是怎么回事?
$(document).ready(function () {
$("#submit-table").click(function(e) {
e.preventDefault();
//array for Variant Titles
var toAdd = new Array();
var qty;
for(i=0; i < length; i++){
toAdd.push({
variant_id: $("#variant-"+i).val(),
quantity_id: $("#quantity-"+i).val() || 0
});
}
function moveAlong(){
if (toAdd.length) {
var request = toAdd.shift();
var tempId= request.variant_id;
var tempQty = request.quantity_id;
var params = {
type: 'POST',
url: '/cart/add.js',
data: 'quantity='+tempQty+'&id='+tempId,
dataType: 'json',
success: function(line_item) {
jQuery.getJSON('/cart.js', function(cart, variant, item, line_item) {
$('nav .customer-wrap ul li.basket span').text(cart.item_count);
$( '<li class="c-1"><a href="{{ item.url }}" title="View product"> <div class="qc-thumb"><img src="{{ item.product.featured_image.src | product_img_url: 'thumbnail' }}" alt="{{ item.title }}" class="wk-variant-image" /></div> <div class="qc-details"><p>{{ product.title }}</p> <p>Qty:' + tempQty + '</p></div></a></li>' ).prependTo( ".basket-quick-view" );
});
console.log("success!");
setTimeout(function () {
$('nav .customer-wrap ul li.basket ul.basket-quick-view').removeClass('variant-added');
}, 3000);
moveAlong();
},
error: function() {
console.log("fail");
moveAlong();
}
};
$.ajax(params);
}
else {
//document.location.href = '/cart';
}
};
jQuery.getJSON('/cart.js', function(cart, variant) {
$('nav .customer-wrap ul li.basket span').addClass('product-added');
$('li.empty').hide();
$('nav .customer-wrap ul li.basket ul.basket-quick-view').addClass('variant-added');
});
moveAlong();
});
});
【问题讨论】:
-
难道不是因为您在代码中两次发出
GET请求吗? -
id 为 submit-table 的元素是否有一个带有 click 事件处理程序的子元素?
标签: javascript jquery ajax shopify