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));