我试图复制一行,更改一些数据,然后将其附加到表的末尾:
$(document).ready(function(){
$("#show_new_rows_number").change(function(){
var table_body = $("tbody");
var master_row = table_body.clone().children('tr')[mr_selector];
master_row.children('td')[0].children('input').first().name = 'type['+(rows+1)+']';
master_row.children('td')[1].children('input').first().name = 'type['+(rows+1)+']';
});
});
这是HTML:
<html>
<head>
<title>Test</title>
</head>
<body>
<table>
<thead>
<tr>
<th>First Name:</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="first_name[1]"></td>
<td><input type="text" name="last_name[1]"></td>
</tr>
</tbody>
</table>
<input type="number" min=1 max=10 value=1 id="show_new_rows_number">
</body>
</html>
我收到一个错误master_row.children is not a function
。当涉及到DOM操作时,我真的很想在Java中遍历和执行任何操作。请帮忙!我什至还没有将行追加到表中,并且已经出现错误。
答案 0 :(得分:0)
问题在于,从jQuery的.children()
方法返回的元素不是jQuery元素,而是HTML元素,因此它们没有任何.children()
方法。
因此,假设其余代码是正确的(因为这似乎只是javascript代码的一部分),则您的代码应为:
$(document).ready(function(){
$("#show_new_rows_number").change(function(){
var table_body = $("tbody");
var master_row = table_body.clone().children('tr')[mr_selector];
$(master_row.children('td')[0]).children('input').first().name = 'type['+(rows+1)+']';
$(master_row.children('td')[1]).children('input').first().name = 'type['+(rows+1)+']';
});
});
在这种情况下,请使用开发人员工具在控制台上打印一些值。如果运行console.log($("tbody").clone().children('tr')[mr_selector].children('td')[0]);
,则只会得到一个HTML元素,而不是jQuery元素。