试图获得动态价值

时间:2011-09-18 23:53:24

标签: jquery

我正在尝试为每个检查的行获取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.")

4 个答案:

答案 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事件。如果小时数可以是小数,则可以使用变体解决方案作为练习。