javascript购物篮删除内容

时间:2011-04-10 08:52:40

标签: javascript jquery shopping-cart

我有一个购物篮,以及一些用于实时更新内容和总和的javascript方法。 使用以下方法完美地同步javascript更新数量和总和:

            $('#add-to-basket select').selectbox();
    $('#contents select').selectbox().change(function (e) {
        var product = $(this).parents('.product');
        var ppu     = product.find('.ppu').val();
        product.find('.price .wrapper .value').text($(this).val() * ppu);

        var total   = 0;

        $('.product .price .value').each(function (index, value) {
            total += +$(value).text();
        });

        var form = $(this).parents('form');
        form.ajaxSubmit(function () {
        });

        $('#total .value').text(total);
    });

但'drop basket from basket'方法并没有更新总和......我设法编写的代码:

$('.drop-item').click(function(e) {
        e.preventDefault();
        var form = $(this).parents(form);
        var item = $(this).parents('li');

        var total   = 0;

如何修改它以便当有人从篮子中删除某些东西时,要自动更新的总和(不是通过点击刷新页面,它会给我注入一些异常情况)? 我希望自动更新,就像上面的更新篮子方法一样。

谢谢!

编辑:整个代码:

    $('#add-to-basket select').selectbox();
    $('#contents select').selectbox().change(function (e) {
        var product = $(this).parents('.product');
        var ppu     = product.find('.ppu').val();
        product.find('.price .wrapper .value').text($(this).val() * ppu);

        var total   = 0;

        $('.product .price .value').each(function (index, value) {
            total += +$(value).text();
        });

        var form = $(this).parents('form');
        form.ajaxSubmit(function () {
        });

        $('#total .value').text(total);
    });

    $('#delivery #address a').qtip({
        content: 'Vei putea reveni la coș dând click pe <span>Coșul Meu</span> în meniu.'
    });

    $('.drop-item').click(function(e) {
        e.preventDefault();
        var form = $(this).parents(form);
        var item = $(this).parents('li');
        var total   = 0;



        $('.product .price .value').each(function (index, value) {
            total +=  +$(value).text();
        });

        $('#total .value').text(total);

        item.remove();
        form.ajaxSubmit(function() {});

        if ($('#contents li').length < 1)
        {
            $('#basket').remove();
            $('#basket-breadcrumbs').remove();

            $('#main').append('<p class="message">Coșul tău este gol.</p>');
        }
    });

1 个答案:

答案 0 :(得分:0)

如果你的意思是“总”变量没有改变,那是因为变量范围。 在函数内部声明一个变量时,它是函数的本地变量:只有函数可以访问它并操纵它。

所以,如果你想让总变量全局化(或更高的范围,意味着更多东西可以访问它):

$(function() {
    var total = 0;
    //code code code
});

现在,请确保稍后不会在var语句中添加前缀;如上所述,这会创建一个局部变量并覆盖全局变量。

((编辑:这是对变量范围是什么的一个半定义的解释。我建议你谷歌或搜索Stackoverflow以找到关于它的更多信息;它在JavaScript中是非常重要的事情))

如果您的意思是从某个地方删除某个元素,请使用jQuery's remove function