2013-04-05 86 views
1

我在當我需要動態添加的div塊Web表單。在div塊內生活着一個可排序的物品表格。我通過在最後一個div上調用clone()來完成div的添加,並且它是子節點,根據需要修改輸入(自從測試失敗以後就被承認的代碼)。並將新克隆的div附加到最後一個div的父級。然而,無論我嘗試什麼,我都無法獲得新克隆的div w/child表,可以像它的predicessor那樣排序。與排序表克隆格允許拖動但不排序

我已經安裝了following test顯示在的jsfiddle問題。

而對於那些無法看到的jsfiddle,這裏是relavent位嘗試:

的HTML部分:

<div> 
    <div class="inner"> 
     <input name="one" value="something" /> 
     <table> 
      <tbody> 
       <tr> 
        <td>First</td> 
        <td> 
         <input name="row1" value="1" /> 
        </td> 
       </tr> 
       <tr> 
        <td>Second</td> 
        <td> 
         <input name="row2" value="2" /> 
        </td> 
       </tr> 
       <tr> 
        <td>Third</td> 
        <td> 
         <input name="row3" value="3" /> 
        </td> 
       </tr> 
       <tr> 
        <td>Fourth</td> 
        <td> 
         <input name="row4" value="4" /> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
    <br/> 
</div> 
<input type="button" id="button" value="Add" /> 

而jQuery的部分

$(document).ready(function() { 
    $('div.inner table tbody').sortable({ 
     stop: function() { /* Some code to reset the row numbers */ 
     } 
    }); 

    $('#button').click(function(event) { 
     var newInnerDiv = $('div.inner:last').clone(true,true); 

     // clean up the inputs 

     // Append the new Item Type to the parent of the existing one 
     $(newInnerDiv).appendTo($('div.inner:last').parent()); 

     // renumber inputs 

     // Even if I make this re-sortable, the new table doesn't work 
     $(newInnerDiv).sortable(); 
    }); 
}); 

有一些如何重新應用新克隆表的排序?我們使用jQuery 1.7.1和jQuery UI 1.8.13。

回答

2

克隆表沒有數據和事件(與事件克隆這意味着你的新表中的行要被分類到表),然後進行排序表代替了原來的股利。 (你也可以連接你的便利方法。)

var newInnerDiv = $('div.inner:last').clone(false,false) 
     .appendTo($('div.inner:last').parent()) 
     .find('tbody').sortable(); 

http://jsfiddle.net/mblase75/2d6G9/

您還可以.insertAfter('div.inner:last')取代.appendTo($('div.inner:last').parent())nearly the same result(你在那裏有一個<br>爲好,這改變了位置,這取決於你的代碼使用)。

+0

這是有道理的。在我的「真實」的代碼,我有一大堆的表中的按鈕來刪除行,我是那種希望維護他們的點擊事件,這就是爲什麼我去克隆路由,而不是隻建立DOM和增加它的。但是,我想如果我想要分類與克隆一起工作,我必須把壞與好。 – CodeChimp 2013-04-05 14:48:36

+1

如果[代表](http://api.jquery.com/on/#direct-and-delegated-events)的點擊事件,一個共同的父元素,它們會附着於母,而不是和你不噸需要擔心克隆他們:'$(「共家長選擇」)上(「點擊」,「按鈕,選擇」,函數(){...})' – Blazemonger 2013-04-05 14:50:47

+0

的jQuery從未停止給我帶來驚喜: )。 – CodeChimp 2013-04-05 14:54:14

相關問題