2012-08-22 104 views
0

我幾乎解決了我的任務,即使用jquery(1.8.0)部分加載html。.load()失去加載的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

錶行只能包含表格單元格。不過,我不確定是否會導致問題。 (嘗試先將表格包裝在'​​'中。) – pimvdb

+0

這是我朋友的回答。謝謝。 :)請插入它,所以我可以勾選它。 – Houman

+0

我這樣做:'var target = $('​​').appendTo(row)'然後'target.load(...)'這是一個好方法嗎? – Houman

回答

0

A <tr>不能包含<form>元素。大多數瀏覽器試圖在一定程度上解決它,但它不可靠,畢竟它是無效的。

你需要創建一個<td>第一:

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

我也意識到tr的內容需要爲了部分加載的目的而被擦除。 'var row = $(this).closest('tr')。empty();':) – Houman