0

我正在开发一个 SimpleCart 项目,该项目需要许多选项来改变商品的价格。每个选项都会在商品的基本价格上增加一定的金额。例如:

商品基本价格 = 10 美元

下拉菜单 1:

  • 选项 1,2,3 加 $0
  • 选项 4,5,6 加 $1
  • 选项 7,8,9 加 $2

...等等,用于具有不同基本价格的多个项目中的多个下拉菜单。

simplecartjs.org 文档建议使用 beforeAdd 事件,例如:

simpleCart.bind( 'beforeAdd' , function( item ){
if( item.get( 'size' ) == 'Small' ){
item.price( 10 );
} else if( item.get( 'size' ) == 'Large' ){
item.price( 12 );
}
});

您将如何使用与此类似的东西将特定金额添加到基本价格而不是为每个选项定义固定价格?

这是一些简化的示例 HTML 代码(我的项目实际上在一个下拉菜单中有 70 多个选项):

<div class="simpleCart_shelfItem">
<h2 class="item_name">item</h2>
<select class="item_size">
<option value="small">small</option>
<option value="medium">medium</option>
<option value="large">large</option>
</select>
<select class="item_length">
<option value="short">short</option>
<option value="long">long</option>
</select>
<input value="1" class="item_Quantity" type="text">
<span class="item_price">$10</span>
<a class="item_add" href="javascript:;">add to cart</a></p>
</div>
4

1 回答 1

0

我可能会以与提供的文档相同的方式进行处理,但除了将基本价格作为变量之外,您可以使用它来增加额外成本。在函数内应用变量将使其保持本地化,因此如果您在另一个函数中有基本价格,它不会打扰代码。

*注意我没有测试它,只是想我会如何试一试。

simpleCart.bind('beforeAdd', function (item) {
    var basePrice = 10;
    if (item.get('size') == 'Small') {
        item.price(basePrice + 2);
    } else if (item.get('size') == 'Large') {
        item.price(basePrice + 2);
    } else if (item.get('size') == 'Long' && item.get('otherProperty')) {
        item.price(basePrice + 9);
    }
});
于 2014-03-27T02:29:22.367 回答