jQuery克隆的表行不能从DOM中检索?

我正在编写一些jquery来创建动态表单表。

它需要做的就是克隆一行,然后更改该行的一些属性以使其唯一。

因此,我的策略是首先克隆它,将其附加到表中,然后获取其中一个子元素并对其进行修改。 一切正常,但最后一部分。

$(function () { $(".appendRow").click(function() { var body = $(this).closest("tbody"); var row = $(this).closest("tr"); var newNum = $(".operation").size(); $("#test").append("

newNum: " + newNum + "

"); var clone = row.clone(); body.append(clone); var newRow = $(".RowNumber").get(newNum); var newRowNum = newNum + 1; $("#test").append("

newRowNum: " + newRowNum + "

"); // $("#test").append("

type: " + newRow.type() + "

"); // tried to check type with this, error //newRow.html(newRowNum); // trying to change html of span element, fails with error }); });

第一个注释行旨在帮助我调试。 它和其他其他评论行在Google Chrome中导致错误:

本地exception,类型错误,newRow未定义。

下面是html:

 
<!----> . . .
Order Process Operation Value +
11 Select Category translate math format write Select Sub-Category c" selected="selected">Use source as core by defaultt->c">Only process translated values

2013年5月29日的注意事项:我最近发现,我的Adblock Plus为Google Chrome添加了以防止类“addRow”被显示(它使用display:none用于与广告相关的一堆类)。 我已经编辑了问题和答案,将类更改为“appendRow”,这样任何复制此代码的人都不会遇到我刚才遇到的同样问题。

为什么要追加一个元素,然后在追加它之前修改它时从DOM中获取该元素进行修改?

我不知道你要做什么,但也许是这样的:

 $(function() { $('#processname').on('click', '.addRow', function() { var body = $(this).closest("tbody"); var row = $(this).closest("tr"); var newNum = $(".operation").length + 1; var clone = row.clone(); clone.find('.rowNumber').html(newNum); body.append(clone); }); });​ 

小提琴