0

ユニプロジェクトとしてショッピングカートを作っているのですが、今のところカートに商品を追加することができ、ページを更新するとカートから商品を削除することができます。

ただし、アイテムがバスケットに追加されると、最初にブラウザを更新しないとカートからアイテムを削除できません。何故ですか?

これは私の削除アイテムフォームカート機能です

    $('.del').on("click",function(){
    var id= this.id;
    var productId = $('#productId-'+id).text();
    var productPrice = $('#price-'+id).text();
    var total = $('#total').text();
    var newPrice = (parseFloat(total) - parseFloat(productPrice)).toFixed(2);
    var dataString = 'id='+ id;
    cartSize--;

    $('#total').html(newPrice);     
    $("#cart-"+id).slideUp('slow', function() {$(this).remove();});

    $.ajax({
        type: "POST",
        url: "resources/del.php",
        data: dataString,
        cache: false,
        success: function(html){
            $('#added-'+productId).fadeOut('Fast');
            $('#product-'+productId).delay(600).fadeIn('Fast');

            if(cartSize == 0){
                $('#noItems').fadeIn('Fast');
                $('#mainCart').fadeOut('Fast');     
            }
        }
    });
    return false;   

});

});

カートに追加する機能は次のとおりです。

     $('.addToCart').click(function(){
    var id = this.id;
    var price = parseFloat($('#priceAdd-'+id).val()).toFixed(2);;
    var name = $('#name-'+id).val();
    var total =(parseFloat($('#total').text())+parseFloat(price)).toFixed(2);
    cartSize++;

    $('#product-'+id).fadeOut('fast');
    $('#added-'+id).delay(500).fadeIn('fast');

    $.ajax({
        type: "POST",
        url: 'resources/addToCart.php',
        data: { itemId: id , name: name, price: price},
        cache: false,
        success: function(html){
            $("ol").append(html).slideDown("slow");
            $('#noItems').fadeOut('fast');
            $('#total').html(total);
            $('#mainCart').fadeIn('fast');
        }
    });
});

任意の入力をいただければ幸いです。

4

2 に答える 2

3

非推奨.on()の関数の場合と同様に、将来の要素に適用されるように使用する必要があります。 .live()

注意:.on()は単に.live()のエイリアスではなく、構文が異なります。

$(document).on('click', '.del', function(){...});

そこでドキュメントを使用しましたが、動的に作成している要素のより近い親として存在する要素を選択することをお勧めします。

$('#basket').on('click', '.del', function(){...});

http://api.jquery.com/on/

于 2013-03-11T20:26:03.800 に答える
2

.live()「jQuery1.7以降、.live()メソッドは非推奨になりました。」という理由で使用しないでください。

使いたい.on()

$('#myListItems').on("click", ".del" ,function(e) {
   $(e.target).remove()
});

jQueryのonメソッド

于 2013-03-11T20:28:34.093 に答える