2012-07-20 24 views
1

在過去的4個小時裏,這讓我大開眼界,我無法讓它工作!jQuery - 如何讓兩個.text工作?

我有兩個函數替代'.cd_price'。當您選擇B & W時,它會起作用,但是當您更改'.cd_quantity'時,它顯然會被替換。

我試圖將'newPrice'放入一個隱藏區域,並從那裏抓取這些信息,但是這些信息只要我可以沒有被卡住就可以得到。

您可以在http://gilliesaudio.co.uk/store/products.html

找到實例非常感謝你提前傢伙!希望我沒有錯過任何信息。

這是我的HTML:

<input type="text" value="50" min="50" class="item_Quantity cd_quantity"> 
<span class="item_price cd_price" data-base_price="0.53"></span> 

這是我的jQuery:

$(".item_print-colour").on("change", function() { 
     var base_price = $(".cd_price").data("base_price"); 
     var addition = (this.value == 'B&W' ? 0.20 : 0); 
     var newPrice = (base_price + addition).toFixed(2); 
     $(".cd_price").text(newPrice); 
    }); 

/* CD START */ 
$(".cd_quantity").on("keyup", function() { 
    var base_price = $(".cd_price").data("base_price"); 
    var discount = 0; 

if (this.value > 99) discount = 0.09; 
    $(".cd_price").text((base_price - discount).toFixed(2)); 

if (this.value > 199) discount = 0.14; 
$(".cd_price").text((base_price - discount).toFixed(2)); 

回答

0

首先,$('.cd_price')總是返回那個類.cd_price元素的列表。所以當DVD選擇改變時,它將用新的價格替換第一個.cd_price。而且,在您的演示頁面中,我看到dvd的價格是dvd_price

+0

我對每種產品都有單獨的功能。 – user1122925 2012-07-20 16:14:20

0

問題是您正在將keyup事件中的base_price設置爲data-base_price屬性。您應該將變量設置爲當前值.cd_price。像下面這樣:

var base_price = parseFloat($(".cd_price").eq(0).text()); 

,因爲有2個,並解析文本值轉換爲一個float這抓起.cd_price第一個實例。

您可能還會考慮更改變量。

我注意到的另一個問題是,如果您輸入的數量足夠高以獲得折扣,則折扣將應用於每個關鍵事件。只是想我會指出。