我有一些看起来像这样的复选框:
我想将数据 - 原始价格和数字相乘当我在下拉列表中选择更大的尺寸时,数据价格为3。
我试过这样的事情:
$(document).on('change', '#pa_size', function() {
if ($("#pa_size").val() == "32cm-normal") {
var value = parseFloat($(".addon-checkbox").data('price').val());
$(".addon-checkbox").data('price').val(value * 3);
} else {
$(".addon-checkbox").data('price');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="pa_size" class="" name="attribute_pa_size" data-attribute_name="attribute_pa_size">
<option value="" selected="selected">Válassz egy lehetőséget</option>
<option value="32cm-normal" class="attached enabled" selected="selected">32 cm (normál)</option>
<option value="52cm-csaladi" class="attached enabled">52 cm (családi)</option>
</select>
<input type="checkbox" class="addon addon-checkbox" name="addon-4851-husok-2[]" data-raw-price="250" data-price="250" value="sonka">
但我真的不确定如何解决这些价值观和多愁善感。
THX
答案 0 :(得分:0)
您不需要使用val()
。如果没有它,您将获得数据属性,也无法使用val()
工作。
所以改变:
parseFloat($(".addon-checkbox").data('price')).val();
到此:
parseFloat($(".addon-checkbox").data('price'));
data() 也不会更新元素的数据属性,只会在内存中分配它。您需要使用 attr() 来实现此目标。
试试这个:
$(document).on('change', '#pa_size', function() {
if ($("#pa_size").val() == "32cm-normal") {
var dataPrice = parseFloat($(".addon-checkbox").data('price'));
$(".addon-checkbox").attr('data-price', dataPrice * 3);
console.log($(".addon-checkbox").attr('data-price'));
} else {
$(".addon-checkbox").data('price');
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="pa_size" class="" name="attribute_pa_size" data-attribute_name="attribute_pa_size">
<option value="" selected="selected">Válassz egy lehetőséget</option>
<option value="32cm-normal" class="attached enabled">32 cm (normál)</option>
<option value="52cm-csaladi" class="attached enabled">52 cm (családi)</option>
</select>
<input type="checkbox" class="addon addon-checkbox" name="addon-4851-husok-2[]" data-raw-price="250" data-price="250" value="sonka">
&#13;
答案 1 :(得分:0)
首先,我会使用
$(#pa_size).on('change',function()
然后不要使用val(),使用这样的数据:
$(".addon-checkbox").data('price', value*3)
您的功能应如下所示:
$('#pa_size').on('change',function() {
if($("#pa_size").val()=="32cm-normal") {
var value = parseFloat($(".addon-checkbox").data('price'));
$(".addon-checkbox").data('price', value*3);
}
else{
$(".addon-checkbox").data('price');
}
});
答案 2 :(得分:0)
尝试这种方式:
var valRawPrice = parseFloat($(".addon-checkbox").data('raw-price'));
var valPrice = parseFloat($(".addon-checkbox").data('price'));
现在,进一步使用这两个varaiables,即 valRawPrice &amp; valPrice 并进行进一步的乘法运算。 如果解决方案有用,请投票。
<强>谢谢!强>