Javascript 使用jQuery将使用复选框的数据属性从false更改为true

Javascript 使用jQuery将使用复选框的数据属性从false更改为true,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我已在表中创建了项目列表。我想计算选中项目的价格,但无法确定在选中/取消选中复选框时如何更新数据属性。我已经包含了生成列表和更新价格计算的代码 $.each(shopList, function (i, elem) { var item = elem.item; var link = elem.link; var user = elem.user; var price = elem.price; var priority = elem.priority;

我已在表中创建了项目列表。我想计算选中项目的价格,但无法确定在选中/取消选中复选框时如何更新数据属性。我已经包含了生成列表和更新价格计算的代码

$.each(shopList, function (i, elem) {
    var item = elem.item;
    var link = elem.link;
    var user = elem.user;
    var price = elem.price;
    var priority = elem.priority;

    $(".listItems").append(
        '<tr class="items" data-priority="' + priority + '">' +
        '<td><input type="checkbox" class="priority"' + ((priority) ? 'checked' : '') + ' /></td>' +
        '<td>' + '<a href="' + link + '" target="_blank">' + item + '</a>' + '</td>' +
        '<td>' + user + '</td>' +


        '<td class="price">' + price + '</td>' +
        '<td><button class="btn btn-default deleteItem">Del </button></td>' +
        '</tr>'
    );
});
当页面呈现时,它有已选中和未选中的项,并且所有内容最初都是这样工作的,但在进行更改时则不是这样。 如何更新DOM中的数据属性true/false?

不要使用数据属性,只需使用复选框
:checked
status即可 您可以在选中的复选框上循环,并使用
parent().find('.price')
查找正确的价格标签,而不是在
[data priority=true]
复选框上循环

function updatePriority(){
    sumPriority = 0;
    $('.priority:checked').each(function () {
        var priceElement = $(this).parent().parent().find('.price');

        var total = priceElement.text();
        if (!isNaN(total) || total.length != 0) {
            sumPriority += parseFloat(total);
        };
    });
    $('.totalPriority').html(sumPriority.toFixed(2));
};

如何更新DOM中的数据属性true/false

如果您确实希望保持代码不变,并且仅在更改
复选框时更新
数据优先级
属性
,则可以在复选框上实现
更改
侦听器并更改父属性:

$('tr.items .price').change(function() {
    if ($(this).is(":checked")) {
        $(this).parent().parent().attr("data-priority",true);
    }else{
        $(this).parent().parent().attr("data-priority",false);
    }        
});
您可以尝试以下方法:

函数updatePriority(){ sum优先级=0

$('.listItems tr td .priority').each(function () {
     if ($(this).is(":checked"))
     {
        var price=$(this).parent().find('.price').text();
        var total = price;
        if (!isNaN(total) || total.length != 0) {
        sumPriority += parseFloat(total);
        };
     }

});
$('.totalPriority').html(sumPriority.toFixed(2));

})

对不起,我明白了,你需要把两个家长排成一行,第一个是肯定的,谢谢。那是第二位家长。
$('.listItems tr td .priority').each(function () {
     if ($(this).is(":checked"))
     {
        var price=$(this).parent().find('.price').text();
        var total = price;
        if (!isNaN(total) || total.length != 0) {
        sumPriority += parseFloat(total);
        };
     }

});
$('.totalPriority').html(sumPriority.toFixed(2));