2014-03-30 209 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會自動操縱反映到變化。相信我,值得你學習,你不會後悔的。