Javascript 自定义属性而不是val()

Javascript 自定义属性而不是val(),javascript,jquery,html,Javascript,Jquery,Html,我从来都不需要jQuery来获取我在web上所能找到的东西。我正在尝试从select/option对自定义html属性进行“实时”计数 我使用了这个脚本,它工作得很好,但不幸的是,我需要value中的数据将其发送到PHP,并且需要使用自定义的data-attribute。我不知道如何访问选项而不是val()——我尝试了$ksm、$data('ksm')和其他一些奇怪的想法,但它不起作用 JS: // HTML(zaw1到zaw7完全相同): 尼基·佩德森(10.40) 尼尔斯·克里斯蒂安·

我从来都不需要jQuery来获取我在web上所能找到的东西。我正在尝试从select/option对自定义html属性进行“实时”计数

我使用了这个脚本,它工作得很好,但不幸的是,我需要value中的数据将其发送到PHP,并且需要使用自定义的data-attribute。我不知道如何访问选项而不是val()——我尝试了$ksm、$data('ksm')和其他一些奇怪的想法,但它不起作用

JS:


//
HTML(zaw1到zaw7完全相同):


尼基·佩德森(10.40)
尼尔斯·克里斯蒂安·艾弗森(9.58)
克里斯·霍尔德(9.28)
格雷格·汉考克(9.27)
您的KSM:-选择骑手-
我为我糟糕的英语感到抱歉:)

你可以使用.attr()

我建议:

$('select').change(function(){
    var self = $(this);
    $('#sumaksm').text(self.find('option:selected').data('ksm'));
});
$('[id$=nr]').change(function(){
    var total = 0;
    $('[id$=nr]').each(function(){
        total += parseFloat($(this).find('option:selected').data('ksm'));
    });
    $('#sumaksm').text(total);
});

但是,如果您确实(出于某种原因)希望在每次
选择
更改时对
数据ksm
属性求和:

$('select').change(function(){
    var self = $(this),
        total = 0;
    self.find('option').each(function(){
        total += parseFloat($(this).data('ksm'));
    });
    $('#sumaksm').text(total);
});

按照加比的暗示(在下面的评论中),我建议:

$('select').change(function(){
    var self = $(this);
    $('#sumaksm').text(self.find('option:selected').data('ksm'));
});
$('[id$=nr]').change(function(){
    var total = 0;
    $('[id$=nr]').each(function(){
        total += parseFloat($(this).find('option:selected').data('ksm'));
    });
    $('#sumaksm').text(total);
});

参考资料:

使用该方法


演示通过jQuery获取元素数据,只需使用.data();例如:$(this.data('ksm')<代码>总数=总数+数字($(this).data('ksm'))
$('[id$=nr]').change(function(){
    var total = 0;
    $('[id$=nr]').each(function(){
        total += parseFloat($(this).find('option:selected').data('ksm'));
    });
    $('#sumaksm').text(total);
});
   $(window).load(function(){
    $("[id$=nr]").change(function() {
        var total = 0;     
        $('.zawodnik select').each(function() {
            var option = this.options[ this.selectedIndex ];
            total = total + parseFloat( $(option).data('ksm') );
        });
        $('div#sumaksm').html(total); 
    });
   });