我循环遍历一组动态表行,我试图使用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?
}));
答案 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
});