gpt4 book ai didi

javascript - jQuery 不适用于添加的行

转载 作者:行者123 更新时间:2023-11-28 12:35:55 24 4
gpt4 key购买 nike

我有一个表格允许用户输入多个股票

<table class="table1" id="table1">
<thread>
<tr>
<th scope="col">Item Name</th>
<th scope="col">Qty</th>
<th scope="col">Rate</th>
<th scope="col">Amount</th>
</tr>
</thread>
<tbody>
<tr>
<td><input type="text"/></td>
<td><input type="text" class="num" id="qty"/></td>
<td><input type="text" class="num" id="rate"/></td>
<td><input type="text" class="num" id="amt"/></td>
</tr>
</tbody>
</table>
<a id="add"><button>Add</button></a>

这段代码是添加一个新行:

<script type="text/javascript">
$(document).ready(function() {
$("#add").click(function() {
var newrow = $("<tr><td><input type="text"/></td><td><input type=\"text\" id=\"qty\"/></td><td><input type="\text\" id="\rate\"/></td><td><input type="\text\" id="\amt\"/></td></tr>");
newrow.insertAfter('#table1 tbody>tr:last');
return false;
});
$(".num").keyup(function() {
var id = $(this).attr('id');
if (id == 'qty') {
var i = parseFloat($("#rate").val())
if (!isNaN(i)) {
var t = ($(this).val()*$("#rate").val());
$("#amt").val(t.toFixed(2));
} else {
$("#amt").val('');
}
} else if (id == 'rate') {
var i = parseFloat($("#qty").val())
if (!isNaN(i)) {
var t = ($(this).val()*$("#qty").val());
$("#amt").val(t.toFixed(2));
} else {
$("#amt").val('');
}
}
});
});

计算在表格的第一行上运行完美,但是当我添加第二行时,计算不起作用。我哪里错了?

最佳答案

使用事件委托(delegate):

$('body').on('keyup', ".num", function() {
// your code
});

此外,您还必须将类 .num 添加到您创建的元素中,并且多个元素不能使用相同的 ID,而是使用另一个属性(例如 data-id,这并不重要),

var newrow = $('<tr><td><input type="text" /></td><td><input type="text" class="num" data-id="qty"/></td><td><input type="text" data-id="rate"/></td><td><input type="text" class="num" data-id="amt" /></td></tr>');

并在您的函数中使用此属性获取它们:

$('body').on('keyup', ".num", function() {
var $row = $(this).closest('tr');
var $amt = $row.find('[data-id="amt"]');
var $qty = $row.find('[data-id="qty"]');
var $rate = $row.find('[data-id="rate"]');

var id = $(this).attr('data-id');

if (id == 'qty') {
// now using `$rate` instead of $('#rate')
var i = parseFloat($rate.val())

// other code
}

// other code
});

关于javascript - jQuery 不适用于添加的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17038128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com