我想动态地向表中添加行,这是通过克隆行并更改其ID来实现的:
var cloned = $('#tempRow').clone().attr("id","tr" + trLastId);
然后我想更改行中其他组件的ID,例如:
cloned.find('input[id^="upload"]').attr("id","upload" + trLastId);
当我想要更改表单的id时出现问题,该表单是行的第一个子节点并包含所有其他组件:
cloned.find("form").attr('id', "dynamicForm"+trLastId);
以上所有行在Firefox中运行良好,但最后一行在IE8中不起作用。克隆尚未插入(在插入之前我需要更改所有ID),只是保存到'克隆'变量中。为什么IE不允许我更改克隆表单的ID?我怎么能克服它?我正在使用jquery 1.3.2。
答案 0 :(得分:1)
您的说明表明您的HTML不是100%有效,例如<tr><form>...</form></tr>
或<tr><td><form></td>...<td></form></td></tr>
。 JavaScript需要在有效的DOM树中工作,因此当浏览器找到无效的HTML时,它会尝试更改结构以使其有效。这意味着jQuery正在处理的实际文档可能与您想到的文档不同;它甚至可能因浏览器而异。
您可以确认您的HTML是否在http://validator.w3.org/或任何其他类似服务验证?