【发布时间】:2015-02-16 11:36:42
【问题描述】:
我正在建立一个电子商务商店,但我的实际产品页面在路上遇到了一个小障碍。根据如果选择会增加价格的任何产品选项集,我希望能够在添加这些选项后实时更新页面上的价格。我已经设法遍历每个元素,并附加了一个“data-price-effect”属性,但是,当涉及到 select 元素时,我需要检查该项目是否被选为option,每个选项当然都有各自的价格变化属性,但值只会更新到实际的 select 元素。
这是我到目前为止的代码:
function updatePrice(){
$('[data-price-effect]').each(function( index ) {
// do something
});
}
基本 HTML 设置进一步解释:
<form>
<input type="text" name="foo" onchange="updatePrice();" data-price-effect="10.00" />
<select name="bar" onchange="updatePrice();">
<option selected value="Item1" data-price-effect="5.00">Item 1</option>
<option selected value="Item2" data-price-effect="8.00">Item 2</option>
<option selected value="Item3" data-price-effect="10.00">Item 3</option>
</select>
</form>
我什至不知道如何在逻辑上做到这一点,即使是一些巨大的混乱代码也是如此。这里有任何 Javascript 经验丰富的人的指点吗?
【问题讨论】:
-
您也应该发布您的 HTML 结构,以便人们可以看到您正在使用的内容
-
它实际上是具有数据属性的表单元素,但更新了问题。
-
select的选择标准是什么? -
@Regent 如何在循环过程中有效地检查这个?在此期间将检查除选择之外的其他元素(输入、文本区域)。值和 onchange 触发是实际 select 元素的一部分,而不是您正在选择的 option (附加了 data 属性) )。如果可能的话,我希望它能够非常有效地工作,同时保持最小化。如果有的话,我找不到简单的解决方案。
-
@DannyVickers 过时的内联 JS 从一开始就不是好的解决方案。 Jamie Barker 已经开始回答了 - 我希望这个答案在更正后是正确的。
标签: javascript jquery loops attributes element