.load()丢失了加载的html元素的层次结构

时间:2012-08-22 21:25:54

标签: jquery

我几乎完成了用jquery(1.8.0)部分加载html的任务。

这是我从服务器收到的HTML:

<form id="save-form" action="/sales_item/edit/9/" method="post">
  <p>
     <label for="id_item_description">Item Description:</label>
     <input id="id_item_description" type="text" maxlength="40" value="test2y" name="item_description">
  </p>
  <input type="submit" value="save">
</form>

然而,当我在<tr>元素中加载以上jquery时...

function row_edit() {
    // e.g. url = '/sales_item/edit/8' 
    var url = $(this).attr("href") + "/";

    //e.g. get whole row to be replaced with editing fields
    var row = $(this).closest('tr')

    row.load(
        url,        
        function () {
            $("#save-form").submit(url, row_save);
        }
    );
    return false;
}

,层次结构完全丢失,看看在内容之前如何关闭表单标记。

<tr>
   <form id="save-form" action="/sales_item/edit/9/" method="post"></form>      
   <p>
     <label for="id_item_description">Item Description:</label>
     <input id="id_item_description" type="text" maxlength="40" value="test2y" name="item_description">
   </p>
   <input type="submit" value="save">
</tr>

知道我在装载时做错了什么?

1 个答案:

答案 0 :(得分:0)

<tr>不能包含<form>个元素。大多数浏览器试图在一定程度上解决它,但它不可靠,毕竟它显然是无效的。

您需要先创建<td>

$("<td>").appendTo(row).load(...);