我正在尝试向表格添加新行,并且单元格中有一个下拉选择。单击事件适用于现有行,但不适用于新添加的行。有什么建议吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<table id="mytable">
<thead>
<tr>
<th rowspan="2">Line No.</th>
<th rowspan="2">Record Series Number</th>
<th rowspan="2">Records Series Name</th>
<th rowspan="2">Temporary BOX#</th>
<th rowspan="2">Disposal Date</th>
<th colspan="2" style="text-align:center">Dates of Record</th>
<th rowspan="2">Range</th>
<th rowspan="2">Action</th>
</tr>
<tr>
<th scope="col">From</th>
<th scope="col">To</th>
</tr>
</thead>
<tbody>
<tr class="rows"><td>1</td ><td><select id="recordsNumber"><option value="" selected disabled hidden>Choose here</option><option value="CRA AND LPA CASE FILES">MAG-35-01</option><option value="ROLL NUMBER FILES">MAG 59-01</option><option value="HEARING DOCKETS">MAG 59-02</option></select></td><td><input type='text' id='recordsName' value="test" disabled /></td><td><input type='text' id='tempbox' /></td><td><input type='date' id='disposalDate' /></td><td><input type='date' id='from' /> </td><td><input type='date' id='to' /></td><td><input type='text' id='range' maxlength='200' /></td><td><button class='btn btn-danger btn-xs btn-delete'>Delete</button></td></tr>
</tbody>
</table>
<button type="button" id="replicateButton">replicate</button>
</body>
<script>
$(document).ready(function() {
$("#mytable tbody tr").on("click", function () {
var $dropdown = $(this).find('select');
var selectedText = $dropdown.find('option:selected').text();
var selectedValue = $dropdown.val();
$(this).find("input[id='recordsName']").val(selectedValue);
$(this).find("input[id='recordsName']").prop('title', selectedValue);
console.log($(this))
})
$("#replicateButton").on("click", function () {
debugger;
var newRow = "<tr><td>1</td><td><select id='recordsNumber'><option value='' selected disabled hidden>Choose here</option><option value='CRA AND LPA CASE FILES'>MAG-35-01</option><option value='ROLL NUMBER FILES'>MAG 59-01</option><option value='HEARING DOCKETS'>MAG 59-02</option></select></td><td><input type='text' id='recordsName' value='test' disabled /></td><td><input type='text' id='tempbox' /></td><td><input type='date' id='disposalDate' /></td><td><input type='date' id='from' /> </td><td><input type='date' id='to' /></td><td><input type='text' id='range' maxlength='200' /></td><td><button class='btn btn-danger btn-xs btn-delete'>Delete</button></td></tr>"
$("table tbody").append(newRow);
});
});
</script>
</html>
我正在尝试向每个新行添加点击事件
您当前的代码仅将
click
侦听器添加到页面加载时存在的 tr
上,因此它不会将单击事件侦听器添加到尚不存在的 tr
中。您可以通过使用事件委托来解决此问题,方法是向父元素添加单击侦听器,然后仅在与 a tr
: 匹配时才触发该事件
$("#mytable tbody").on("click", "tr", function () {
// ...
});