2016-02-20 70 views
0

我有一個存儲在與data-price屬性div的元素。我想要parseFloat()它的值一旦被選中。我實現了使用以下腳本:如何解析多個選定的屬性並將它們添加到一起?

var sum = parseFloat($(".select").data('price')); 

$('#sum').html(sum); 

然而,一旦價格被取出,它會被替換時點擊不同的元素,而不是旁邊顯示其價格另議。存儲所有選定元素價格的最佳方法是什麼?我正在考慮將值存儲在數組中,以便我可以使用for循環來計算總數,但我不確定如何實現它。另外,也許有更有效的方法來做到這一點。

+2

請注意,jQuery的'data()'自動類型轉換嗎? – adeneo

+0

單擊下一個元素時,只需執行'sum + = something'即可將其添加到 – adeneo

+0

如果將字符串強制回到字符串,將字符串解析爲浮點數有什麼意義? – Oriol

回答

0

你能做到這一點

var sum = 0 

$(".select").each(function(selected) { 
    sum += $($('.select')[selected]).data('price') 
}) 

$('#sum').html(sum); 

這工作,因爲$()返回的搜索元素的數組和。每個返回元素的索引它已經到了這樣$($('.select')[selected])首先獲得所有類與選擇然後選擇索引並將其轉換爲jQuery對象,以便我們可以使用.data並獲取價格。 爲了保持它的更新,你可以

$('.elements').click(function() { 
    // add all the code above here 
}) 
+0

jquery沒有'forEach'函數,'sum'會追加價格而不是執行加法,因爲使用'attr()'將檢索價格作爲字符串 – billyonecan

+0

對不起@billyonecan我看到但我發現.each哪應該使它工作,所以沒有問題了 –

+0

我很感謝你的答案。我是jquery的新手,這種方法對我來說很清楚。然而,我需要一個小小的調整。如果我選擇價格爲10.99和11.99的2個元素作爲迴應,並且將它們取消選中,那麼我將餘額設置爲1或-1。計算是正確的,但我想達到的效果是總和設置爲0,而沒有選擇任何東西。任何想法如何調整它? – Scarto

相關問題