2011-04-10 34 views
0

我有一個購物籃,以及一些用於實時更新內容和總數的javascript方法。 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-item').click(function(e) { 
     e.preventDefault(); 
     var form = $(this).parents(form); 
     var item = $(this).parents('li'); 

     var total = 0; 

如何修改它,以便當有人從籃子中刪除了一些東西時,總數會自動更新(不是通過onclick刷新頁面,它注入了一些異常情況)? 我想自動更新,就像它在上述更新籃方法中一樣。

謝謝!

編輯:整個代碼:

$('#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>'); 
     } 
    }); 
+0

我可能會丟失一些東西,但在drop-item click中,您實際上在哪裏改變某些東西?你只需聲明變量。 – Zirak 2011-04-10 08:54:52

+0

這就是它。我不會改變......我不知道我必須做些什麼才能放棄物品。 – dana 2011-04-10 09:00:57

回答

0

如果你指的是「總」變量並沒有改變,這是因爲變量範圍的。 當函數內部聲明一個變量時,它是函數的局部函數:只有函數可以訪問它並對其進行處理。

所以,如果你想總的全局變量(或更高的範圍界定,這意味着更多的東西可以訪問它):

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

現在,確保你不會總前綴後面用var語句;如上所述,這會創建一個局部變量並覆蓋全局變量。

(。(編輯:這是什麼變量範圍是相當半稱職的解釋,我建議你谷歌或搜索#1找到更多關於它的信息,它是在JavaScript中一個非常重要的事情))

如果你的意思是從某處刪除一個元素,使用jQuery's remove function

+0

我並不完全瞭解你的解決方案。我編輯了這個問題,添加了整個代碼。謝謝! – dana 2011-04-10 09:48:13

+0

我仍然對你實際想要完成的事感到困惑。你想要更新什麼?顯示多少被刪除的價格? – Zirak 2011-04-10 09:50:29

+0

刪除購物籃商品後的總金額 – dana 2011-04-10 17:12:31