0

我正在遍历一组动态表行,我试图使用 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?
   }));
4

3 回答 3

0

你的 jQuery 应该是这样的:

$('.plantTable tr').each(function () {
    $(this).find('.cell1').blur(function () {
        cell1val = parseInt($(this).val());
        cell2val = parseInt($(this).siblings(".cell2").val());
    });
});
于 2013-02-14T16:03:52.737 回答
0

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

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

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

于 2013-02-14T16:02:43.943 回答
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
 });
于 2013-02-14T16:26:18.460 回答