计算jquery中每个表行的文本框

时间:2013-02-14 15:59:36

标签: jquery

我循环遍历一组动态表行,我试图使用jquery捕获每个表行中cell2的值,但每次都返回cell2 row1的值,即使它识别cell1每个正确的行值时间,有谁能告诉我,我出错了吗?见下面的示例代码。

感谢您的任何帮助。

//html
<table class=plantTable>
<tr>
<td><input type=text value=0 class=cell1></td>
<td><input type=text value=0 class=cell2></td>
<td><input type=text value=0 class=cell3></td>
</tr>
<tr>
<td><input type=text value=0 class=cell1></td>
<td><input type=text value=0 class=cell2></td>
<td><input type=text value=0 class=cell3></td>
</tr>
<tr>
<td><input type=text value=0 class=cell1></td>
<td><input type=text value=0 class=cell2></td>
<td><input type=text value=0 class=cell3></td>
</tr>
</table>

//jquery
   tr = $(".plantTable tr").length;

   $(tr).each(function () {
      $(this).find($(".cell1").blur(function () {
      cell1val = parseInt($(this).val());
      cell2val = parseInt($(".cell2").val());  //Returns the value of cell2 in the first row only?
   }));

3 个答案:

答案 0 :(得分:0)

在查找内部,您将再次查找,它将从顶部查看文档,从而找到row1 cell2。如果您想要当前项目的兄弟,请执行以下操作:

   $("tr").each(function () {
      $(this).find($(".cell1")).blur(function () {
         cell1val = parseInt($(this).val());
         cell2val = parseInt($this.siblings(".cell2").val());
      });
   });

这将检索当前找到的cell1旁边的cell2的值。

答案 1 :(得分:0)

你的jQuery应该是这样的:

$('.plantTable tr').each(function () {
    $(this).find('.cell1').blur(function () {
        cell1val = parseInt($(this).val());
        cell2val = parseInt($(this).siblings(".cell2").val());
    });
});

答案 2 :(得分:0)

关于解决方案可以完美地完成您的工作,但每当添加新元素时我都会怀疑它们。即使将来添加了一些其他输入元素,下面的代码也能正常工作。

 // If you want to maintain resusable collection of all inputs inside  
 var inputCollection = $([]).pushStack($("table.plantTable :input"));
 // Then do operations with inputCollection
 // Else, you could follow chaining like below  

 $("table.plantTable").delegate("input", "blur", function() {
    var inputs = $(this).closest('tr').find(':input');
    // do whatever you want to with inputs
 });