Javascript jquery将数据属性传递给回调函数

Javascript jquery将数据属性传递给回调函数,javascript,jquery,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); } 此时,它正在正确地检索

嘿,伙计们,我有下面的函数,其中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属性。我的问题是: 如何访问同一选定选项的
数据
属性?我试过:

 ('option:selected', obj).data('duration', ....
.data('data-duration')
.attr('duration') 
然而,它们似乎都不起作用。jQuery文档说,
data()
应该可以做到这一点,但在本例中,由于某种原因,它没有做到。有什么想法吗

示例HTML


挑选
测试
测试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);
}

使用
$('option:selected',obj).data('duration')
。使用
data()
时需要删除
data-
前缀,使用
attr()
时需要添加前缀;你的逻辑是颠倒的。投票决定以似曾相识的方式结束。。。请分享你的HTML。您是否碰巧通过AJAX填充了选项?您的意思是不是
calculate:function(obj){var sum=0;$('option:selected',obj.each(function(){sum+=Number(this.value);});$('td:last',obj.text(sum);HoursSum.table.trigger('sumChanged',sum);}
通过php从数据库页面加载选项。HTML:选择test1这将返回未定义的数据。durationNevermind-错误在我这边。这很有效。它正确地获取值。非常感谢。