2015-02-08 48 views
2

當我在輸入文本(.item-input)類型,它應該在table的底部添加一個新tr - 它應該從class="template-row"複製和更改類名class="row"(只有新在添加TR動態

還應不守添加在底部的新潮流,如果底部的輸入是空的(新'TR')

出於某種原因,底部)動態tr,它在表的底部會添加一旦和class="template-row" tr被刪除的頂部,它不應該發生?

例如:

<style> 
    .template-row { display: none; } 
</style> 

    <table> 
     <tr class="template-row"> 
      <td> <input class='item-input' type="text"> </td> 
     </tr> 
     <tr class="row"> 
      <td> <input class='item-input' type="text"> </td> 
     </tr> 
    </table> 

的jquery:

$(document).ready(function() { 
    $('.item-input').on('keydown', function (e) { 
     var itemName = $.trim($(this).val()); 

     if (itemName != '') { 
      var templateRow = $(".template-row"); 

      $('table tr:last').after(templateRow).removeClass('template-row').addClass("row"); 
     } 
    }); 
}); 
+1

您需要克隆模板而不是替換它。 – Mouser 2015-02-08 12:47:45

+0

@Mouser啊,這是一件有趣的工作,但它沒有將'template-row'的類名重命名爲'row'以獲得新的動態'tr'。隨意發表回答 – 2015-02-08 12:52:29

+0

只是'var templateRow = $(「。template-row」)。clone();' – dfsq 2015-02-08 12:53:48

回答

2

jquery: 
 
$(document).ready(function() { 
 
    $('.item-input').on('keyup', function (e) { 
 
     var itemName = $.trim($(this).val()); 
 

 
     if (itemName.length > 0 && $(this).data("copied") == undefined) { 
 
      var templateRow = $(".template-row").clone(true).removeClass('template-row').addClass("row"); 
 
      $('table').append(templateRow); 
 
      $(this).data("copied", true); 
 
     } 
 
    }); 
 
});
.template-row { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 

 
    <table> 
 
     <tr class="template-row"> 
 
      <td> <input class='item-input' type="text"> </td> 
 
     </tr> 
 
     <tr class="row"> 
 
      <td> <input class='item-input' type="text"> </td> 
 
     </tr>  
 
    </table>

該代碼會在每次先前的輸入被填滿時添加一個新的輸入。它每個輸入只執行一次。

  • $(this).data("copied")檢查數據屬性copied。如果存在,則輸入之前已被填充並且創建了新的輸入。它爲屬於tr的元素設置了一個屬性:data-copied="true"data真的是jQuery的簡寫attr("data-copied")
  • clone(true)複製模板和事件。
  • 克隆後,模板類被刪除。
+0

這很好,謝謝.. $(this).data(「copied」)'工作如何?這對我來說是新的。 – 2015-02-08 13:04:51

0

嘗試此,哪些克隆的節點,並將其追加的元件。

$(document).ready(function() { 
    $('.item-input').on('keyup', function (e) { 

     var itemName = $.trim($(this).val()); 

     if (itemName != '') { 
      var templateRow = $(".template-row").clone(); 

      templateRow.appendTo('table').removeClass('template-row').addClass("row"); 
     } 
    }); 
}); 
+0

這不起作用。它在'tr'中增加了'tr'。 – 2015-02-08 12:56:58