| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1883 人关注过本帖
标题:求助,关于循环生成的div导致事件失效该如何解决。
只看楼主 加入收藏
codeing
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-12-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
求助,关于循环生成的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
求大家帮忙指点,卡在这里写不动了。
2015-12-19 10:15
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:20 
你查查php的代码,是不是cart_increase函数的参数有问题

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-12-22 14:51
快速回复:求助,关于循环生成的div导致事件失效该如何解决。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016410 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved