我有一张桌子,如果我点击一个按钮,我想从charge_outstanding_NUM中取值,并将charge_receipt_NUM设置为它。我需要一个可重用的脚本,因为我不知道将通过哪些行发布。
<table>
<thead>
<tr>
<th>ID</th>
<th>Value</th>
<th>Outstanding</th>
<th>Reciept</th>
</tr>
</thead>
<tbody>
<tr>
<td>001</td>
<td>150.00</td>
<td id="charge_outstanding_1">150.00</td>
<td><input type="text" name="charge_receipt_1" id="charge_receipt_1" value=""></td>
</tr>
<tr>
<td>002</td>
<td>10.00</td>
<td id="charge_outstanding_2">10.00</td>
<td><input type="text" name="charge_receipt_2" id="charge_receipt_2" value=""></td>
</tr>
<tr>
<td>003</td>
<td>250.00</td>
<td id="charge_outstanding_3">250.00</td>
<td><input type="text" name="charge_receipt_3" id="charge_receipt_3" value=""></td>
</tr>
</tbody>
</table>
我的jquery不工作,我不知道为什么。我点击按钮然后循环遍历以'charge_outstanding_'开头的每个col,然后获取该值并将其分配给同一行内最近的输入。
$('#pay_in_full').click(function(){
$("[id^=charge_outstanding_]").each(function(){
charge = $(this).val();
$(this).closest('input').val(charge);
});
});
答案 0 :(得分:1)
.Closest
将搜索祖先元素。在您的情况下,目标input
是所选元素的下一个兄弟的子节点。因此,您必须使用.find()
或.children()
来选择它。
尝试,
$('#pay_in_full').click(function(){
$("[id^='charge_outstanding_']").each(function(){
charge = parseInt($(this).text());
$(this).next().find('input').val(charge);
});
});
此外,您选择的是td element
,因此您必须使用.text()
才能获取其文字.val()
答案 1 :(得分:1)
工作JSfiddle:http://jsfiddle.net/F5NvW/2/
您的代码问题:charge = $(this).val();
您发现td
没有任何价值,您需要.html()
$(document).on("click", "#pay_in_full", function() {
$("[id^=charge_outstanding_]").each(function(){
var charge = $(this).html();
$(this).next().find('input').val(charge);
});
});
建议:对每个<td>
使用类名称
Jsfiddle:http://jsfiddle.net/F5NvW/
注意:不容易出错..
$(document).on("click", "#pay_in_full", function() {
$(".outstanding").each(function(){
var charge = $(this).html();
$(this).next().find('.paidAmount').val(charge);
});
});