jQuery将数据属性传递给回调函数

时间:2018-06-21 08:56:24

标签: javascript jquery

伙计们,我有以下功能,其中obj是表行

calculate: function(obj) {     
  var sum = 0;   
  $('option:selected', obj).attr('value', function(i,v){
    sum += Number(v);
  });
  $('td:last', obj).text(sum);
  HoursSum.table.trigger('sumChanged', sum);
}

此时,它正在正确检索value属性。我的问题是: 如何访问相同选择选项的data属性?我尝试过:

 ('option:selected', obj).data('duration', ....
.data('data-duration')
.attr('duration') 

但是它们似乎都不起作用。 jQuery文档说data()应该可以解决问题,但是在这种情况下,出于某种原因,它就不行了。有任何想法吗?

示例HTML

<td class='col-sm-1' style='background-color:pink'>
  <select id='22505.30' class='form-control-sm' style='font-size: 11px;' name='shifts' onchange="submitEntry(this.value,this.id, 22505, '30.06.2018')">
    <option value='0'>Select</option>
    <option data-duration='10.60' data-shiftstart='21:00' data-shiftend='06:00' value='120'>test</option>
    <option data-duration='1.00' data-shiftstart='12:00' data-shiftend='13:00' value='118'>test1</option>
  </select>
</td>

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。但是我们需要查看您的HTML以帮助您编写更好的代码。

calculate: function(obj) {     
  var sum = 0;   
  $('option:selected', obj).each(function(){
    var data = $(this).data();
    sum += data.duration;
  });
  $('td:last', obj).text(sum);
  HoursSum.table.trigger('sumChanged', sum);
}