1

在过去的 4 个小时里,这让我大吃一惊,我就是无法让它工作!

我有两个函数替换“.cd_price”。当您选择黑白时,它可以工作,但是当您更改“.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));
4

2 回答 2

0

首先,$('.cd_price')总是返回具有类的元素列表.cd_price.cd_price所以当dvd select改变时,它会用新的价格代替第一个。而且,在您的演示页面中,我看到 DVD 价格的类别是dvd_price.

于 2012-07-20T16:04:00.960 回答
0

问题是您正在设置keyup 事件base_price中的属性。data-base_price您应该将变量设置为 的当前值.cd_price。类似于以下内容:

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

这会抓取第一个实例,.cd_price因为有 2 并将文本值解析为浮点数。

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

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

于 2012-07-20T19:11:59.330 回答