2012-05-18 38 views
1

我正在使用一個系統,可以在幾乎沒有空間進行自定義的表格中生成購物車摘要。我想要做的是當購物車是'空'顯示'0'如何從元素動態克隆文本?

當它有一個數量,顯示該數字。

這是生成的HTML,我有隱藏

<span vertical="False" quote="False" id="catCartSummary"> 
    <table cellspacing="0" class="cartSummaryTable"> 
    <tbody> 
     <tr> 
     <td class="cartSummaryItem">3 item(s), Total: $115.00 <a href="/OrderRetrievev2.aspx?CatalogueID=0" class="cartSummaryLink">View Cart</a></td> 
     </tr> 
    </tbody> 
    </table> 
</span> 

正如你可以看到它目前擁有 「3項目(S)」。

這是什麼樣子空:

<span vertical="False" quote="False" id="catCartSummary"> 
    <table cellspacing="0" class="cartSummaryTable"> 
    <tbody> 
     <tr> 
     <td class="cartSummaryItem">Shopping cart is empty.</td> 
     </tr> 
    </tbody> 
    </table> 
</span> 

現在我有一些簡單的HTML設置在這裏:

<div class="cartsummary"> 
    <div class="cartitems">Shopping Cart <a href="#"><span class="cartTotal"></span> Item(s)</a></div> 
</div> 

使用jQuery我想要再取量,並將其添加到.cartTotal,如果沒有什麼東西只是顯示0.

這類作品,但如果我添加一個新項目的購物車它只更新頁面刷新時的值,而汽車基因組動態更新。

if (jQuery('#catCartSummary .cartSummaryItem').html() != 'Shopping cart is empty.') { 
    var summary = jQuery('#catCartSummary .cartSummaryItem').text().split(" "); 
    var total = summary[0]; 
    jQuery('span.cartTotal').html(total); 
}else{ 
    jQuery('span.cartTotal').html("0"); 
} 

一些額外的值得注意:

  1. 這將是偉大的,是能夠有0 '物品',1 「項」,2 「項目」。而不是總是「物品」
  2. 在另一個區間單獨顯示總成本也很好。也許.cartAmount。

回答

1

嘗試:

var text = $('#catCartSummary .cartSummaryItem').text(); 
items = text.match(/(\d+) item/); 
var num = 0; 
if(items &&items.length > 0){ 
    num = items[1]; 
} 
$(".cartItems").html('<div class="cartitems">Shopping Cart <a href="#"><span class="cartTotal">'+num+'</span> Item'+(num == 1 ? '' : 's') +'</a></div>'); 

一些指針:

  • 使用的.text()來不了的text可變
  • 任何HTML使用正則表達式解析出的數物品而不是拆分
+0

這工作絕對治療。感謝指針,你的代碼更好!任何有關如何在自動生成的值更新時(例如,添加新項目而無需刷新頁面)都必須更新值的想法? – Justin

+0

您必須找到觸發的事件來更新該值並綁定到它,否則您可以製作一個計時器,每隔幾秒檢查一次 – mkoryak

+0

是否可以設置爲每次點擊添加到購物車按鈕時進行檢查(input.productSubmitInput )? – Justin