为什么Firefox在父级上使用innerHTML时会删除TR和TD字符串

时间:2011-01-17 12:26:28

标签: jquery html

我从ajax调用中获取了一个HTML片段。我正在使用jQuery,只想在片段中使用TR。使用jQuery选择器来查找TR在Firefox中没有任何结果,只有IE。

所以作为一种解决方法,我想我可能会尝试

$(ajaxString).filter('form').first().html()

以及

$(ajaxString).filter('form').first()[0].innerHTML

这两种方法仅适用于IE,在Firefox中,TR和TD元素消失,只返回跨度。有什么问题和解决方案? : - )

<form method="post">
 <tr>
   <td><span> stuff </span></td>
 <tr>
<form>

2 个答案:

答案 0 :(得分:3)

当Firefox错误纠正了围绕表行的无效元素时,它会将该元素放在DOM中表的末尾之后。

即。它在使用innerHTML时不会删除它们,它会在首先解析非真正的HTML时删除它们。

表单和表之间的关系可以是“表格在表格中”或“表格在表格单元格中”。

答案 1 :(得分:0)

您的HTML片段应该是有效的。像

这样的东西
<form method="post">
   <table>
     <tr>
        <td><span> stuff </span></td>
     <tr>
   </table>
<form>

然后你可以使用像

这样的东西
$(ajaxString).find("form").html();