我正在尝试为每个检查的行获取td的值,并将其添加到自身以计算总小时数。以下是我到目前为止的情况。 (注意,我尝试过.text,.html和.val的变体。)
<tbody>
<tr class="">
<td><input value="32" type="checkbox"></td>
<td>Keyword Optimization*</td>
<td class="hours" style="">5</td>
<td>hours</td>
</tr>
</tbody>
所以在这种情况下,我希望能够在总小时内添加“5”。这是我的jquery:
$("input:checked").each(function(){
hrs = parseInt($(this).find(".hours").val) + hrs;
});
alert(hrs + " hours.")
答案 0 :(得分:0)
这将为您提供选中行中的小时数:
$("input:checked").each(function(){
var hrs = $(this).parent().siblings('.hours').text() * 1; //the *1 converts the string '5' to a number
});
答案 1 :(得分:0)
查找子节点,这意味着“.hours”节点必须是输入的后代(这是错误的)。
另一件事是class =“hours”是一个td元素,它没有.val(),但有.html()。
试试这个:
$("input:checked").each(function(){
hrs = parseInt($(this).parent().parent().find(".hours").html()) + hrs;
});
alert(hrs + " hours.")
只是为了解释:
$(this)是输入
.parent()是td
.parent()是tr
答案 2 :(得分:0)
文档说找到了节点的后代,所以我认为你需要:
hrs += parseInt($(this.parentNode.parentNode).find(".hours").val(), 10);
答案 3 :(得分:0)
尝试这样的事情:
var updateHoursTotal = function () {
var hours = 0;
$('#yourtable') // within your table
.find('input:checked') // get the set of checked boxes
.closest('tr') // looking up to the enclosing tr
.find('.hours') // find the .hours cell within
.each( function(){ // for each
hours += parseInt( $.trim( $(this).text() ), 10 ); // accumulate total hours
});
$('span#counter').html( hours ); // update displayed total somewhere in UI
}
例如,您可以将这样的函数绑定到每个复选框的click
事件。如果小时数可以是小数,则可以使用变体解决方案作为练习。