求助,关于循环生成的div导致事件失效该如何解决。
贴上源码:{set:$item_json = JSON::encode($item)}
<button class="cart_shop_minus" onclick='cart_reduce({$item_json});'>-</button>
<input class="cart_shop_number" value="{$item['count']}" onchange='cartCount({$item_json});' type="text" id="count_{$item['goods_id']}_{$item['product_id']}" />
<button class="cart_shop_sum" onclick='cart_increase({$item_json});'>+</button>
这两个button是由后台PHP的数据foreach出来的,响应两个事件去改变产品的数量,贴上源码:
//购物车数量改动计算
function cartCount(obj)
{
var countInput = $('#count_'+obj.goods_id+'_'+obj.product_id);
var countInputVal = parseInt(countInput.val());
var oldNum = countInput.data('oldNum') ? countInput.data('oldNum') : obj.count;
//商品数量大于1件
if(isNaN(countInputVal) || (countInputVal <= 0))
{
alert('购买的数量必须大于1件');
countInput.val(1);
countInput.change();
}
//商品数量小于库存量
else if(countInputVal > parseInt(obj.store_nums))
{
alert('购买的数量不能大于此商品的库存量');
countInput.val(parseInt(obj.store_nums));
countInput.change();
}
else
{
var diff = parseInt(countInputVal) - parseInt(oldNum);
if(diff == 0)
{
return;
}
//修改按钮状态
toggleSubmit("lock");
var goods_id = obj.product_id > 0 ? obj.product_id : obj.goods_id;
var goods_type = obj.product_id > 0 ? "product" : "goods";
//更新购物车中此商品的数量
$.getJSON("{url:/simple/joinCart}",{"goods_id":goods_id,"type":goods_type,"goods_num":diff,"random":Math.random()},function(content){
if(content.isError == true)
{
alert(content.message);
countInput.val(1);
countInput.change();
//修改按钮状态
toggleSubmit("open");
}
else
{
var goodsId = [];
var productId = [];
var num = [];
$('[id^="count_"]').each(function(i)
{
var idValue = $(this).attr('id');
var dataArray = idValue.split("_");
goodsId.push(dataArray[1]);
productId.push(dataArray[2]);
num.push(this.value);
});
countInput.data('oldNum',countInputVal);
$.getJSON("{url:/simple/promotionRuleAjax}",{"goodsId":goodsId,"productId":productId,"num":num,"random":Math.random()},function(content){
if(content.promotion.length > 0)
{
$('#cart_prompt .indent').remove();
for(var i = 0;i < content.promotion.length; i++)
{
$('#cart_prompt').append('<p class="indent blue">'+content.promotion[i].plan+','+content.promotion[i].info+'</p>');
}
$('#cart_prompt').show();
}
else
{
$('#cart_prompt .indent').remove();
$('#cart_prompt').hide();
}
/*开始更新数据*/
$('#weight').html(content.weight);
$('#origin_price').html(content.sum);
$('#discount_price').html(content.reduce);
$('#promotion_price').html(content.proReduce);
$('#sum_price').html(content.final_sum);
$('#sum_'+obj.goods_id+'_'+obj.product_id).html((obj.sell_price * countInputVal).toFixed(2));
//修改按钮状态
toggleSubmit('open');
});
}
});
}
}
//增加商品数量
function cart_increase(obj)
{
//库存超量检查
var countInput = $('#count_'+obj.goods_id+'_'+obj.product_id);
if(parseInt(countInput.val()) + 1 > parseInt(obj.store_nums))
{
alert('购买的数量大于此商品的库存量');
}
else
{
countInput.val(parseInt(countInput.val()) + 1);
countInput.change();
}
}
//减少商品数量
function cart_reduce(obj)
{
//库存超量检查
var countInput = $('#count_'+obj.goods_id+'_'+obj.product_id);
if(parseInt(countInput.val()) - 1 <= 0)
{
alert('购买的数量必须大于1件');
}
else
{
countInput.val(parseInt(countInput.val()) - 1);
countInput.change();
}
}
现在的问题是这样的
第一个div中是可以成功调用这两个方法的,但是第二个,第三个div就无法调用,提示
Uncaught SyntaxError: Unexpected token ILLEGAL
求大家帮忙指点,卡在这里写不动了。