删除jquery创建的内容

时间:2014-03-30 20:42:52

标签: javascript php jquery ajax webshop

(根据网上商店)

我想添加一个函数remove,我删除了使用ajax& amp;插入的整个条目。 jquery,但它没有像我想的那样工作。

使用以下代码:

        $('#div').on('click', '.orderd', function() {
            $(this).remove();
        });

function UpdateTotal() {
            ToAddHTML = '<h1>Shopping cart</h1>';
            Totalprice = 0;
            for (var i = 0; i < orders.length ; i++) {
                var zoekresultaat = SubMenuItems.filter(function(v) {
                    return v.submenu_id === orders[i];
                })[0];
                Totalprice += parseFloat(searched.price);
                ToAddHTML += '';
            }
            ToAddHTML += ''
            $("#totalen").html(ToAddHTML);
        }

这样可行,但是当我在console.log数组&#34; orderd items&#34;时,它仍然会重复订购的项目。 因此,当我点击其他项目时,&#34;刚删除&#34;订单再次出现。

很难解释我目前的问题,但我希望我能够获得足够的信息!如有任何问题,请询问!我的问题更新了!

1 个答案:

答案 0 :(得分:1)

您应该从阵列中删除已订购的ID,然后重新计算您的&#34;篮子&#34;当一个项目被删除。

// =======================================================================
// ! Functie maken die de totalen-lijst bijwerkt
// =======================================================================
function WerkTotalenBij() {
    ToeTeVoegenHTML = '<h1>Winkelmandje</h1>';
    Totaalprijs = 0;
    for (var i = 0; i < Bestellingen.length ; i++) {
        var zoekresultaat = SubMenuItems.filter(function(v) {
            return v.submenu_id === Bestellingen[i];
        })[0];
        Totaalprijs += parseFloat(zoekresultaat.price);
        // here I put a "data-itemid" attribute to keep a raw reference to the item id
        // this ID can be retrieved in the remove handler
        ToeTeVoegenHTML += '<div class=besteld id=nummer'+Bestellingen[i]+' data-itemid="'+Bestellingen[i]+'">'+'&euro;'+zoekresultaat.price+' '+zoekresultaat.title+'</br>(verwijder)</div><hr>';
    }
    ToeTeVoegenHTML += '<br/>Totale prijs per persoon :<br/> &euro; '+Totaalprijs+'<br/>Minimaal 10 personen<br/> Aantal personen:<input type=text width="10px" /><input type="button" value="Ik ben klaar!">';
    $("#totalen").html(ToeTeVoegenHTML);
}

$('#totalen').on('click', '.besteld', function() {
    var itemID = $(this).data("itemid");
    // remove the item ID from the array
    var index = Bestellingen.indexOf(itemID);
    if (index > -1) {
        Bestellingen.splice(index, 1);
    }        
    $(this).remove();
    // recalculate orders
    WerkTotalenBij();
}); 

但无论如何,这是您应该使用的典型工作,例如knockout.js libaray,您可以将DOM元素直接绑定到您的数据,并且它应该使用您的数据进行操作, GUI将自动反映更改。相信我,值得学习,你不会后悔。