2012-07-20 49 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第一个实例。

您可能还会考虑更改变量。

我注意到的另一个问题是,如果您输入的数量足够高以获得折扣,则折扣将应用于每个关键事件。只是想我会指出。