将数据值与Jquery相乘

时间:2017-01-10 13:43:02

标签: jquery multiplying

我有一些看起来像这样的复选框:

我想将数据 - 原始价格和数字相乘当我在下拉列表中选择更大的尺寸时,数据价格为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

3 个答案:

答案 0 :(得分:0)

您不需要使用val()。如果没有它,您将获得数据属性,也无法使用val()工作。

所以改变:

parseFloat($(".addon-checkbox").data('price')).val();

到此:

parseFloat($(".addon-checkbox").data('price'));

data() 也不会更新元素的数据属性,只会在内存中分配它。您需要使用 attr() 来实现此目标。

试试这个:

&#13;
&#13;
$(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;
&#13;
&#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 并进行进一步的乘法运算。 如果解决方案有用,请投票。

<强>谢谢!