2014-03-30 149 views
1

(根据网上商店)删除内容

我想添加一个功能删除,在那里我删除使用AJAX & 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阵列 “orderd项目”,它仍然重复orderd项目。 所以,当我点击不同的项目时,“刚删除”的命令再次弹出。

这是很难解释我目前的问题,但我希望我已经足够了解!如有任何问题,请询问!虐待更新我的问题!

+0

从DOM中移除如果你想删除一个变量,将其设置为一个空字符串 –

+0

jQuery删除函数将只删除匹配的DOM元素,它与任何一种底层数据源无关。您应该手动删除阵列中的基础数据项。 –

+1

'(根据网店)是什么意思? – j08691

回答

1

你应该从你的数组中删除有序的ID,并重新计算你的“篮子”,当一个项目被删除。

// ======================================================================= 
// ! 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会自动操纵反映到变化。相信我,值得你学习,你不会后悔的。