在jQuery中删除所有行后,不会添加新行

在jQuery中删除所有行后,不会添加新行,jquery,html,jquery-selectors,Jquery,Html,Jquery Selectors,我有一张桌子里面的表格。在该表中,我有一行输入字段。对于删除行和添加行,我有两个选项。当用户单击“添加行”时,将添加新行;当用户单击“删除行”时,将删除最后一行。这一切都很好。但我有一个问题,假设我点击了删除行选项,最后一行将被删除,这样所有的行都被删除。现在,当我再次单击“添加行”时,它并没有添加新行。有人能解决这个问题吗?以下是此操作的完整代码 <!DOCTYPE HTML> <html lang="en-IN"> <head> <meta ch

我有一张桌子里面的表格。在该表中,我有一行输入字段。对于删除行和添加行,我有两个选项。当用户单击“添加行”时,将添加新行;当用户单击“删除行”时,将删除最后一行。这一切都很好。但我有一个问题,假设我点击了删除行选项,最后一行将被删除,这样所有的行都被删除。现在,当我再次单击“添加行”时,它并没有添加新行。有人能解决这个问题吗?以下是此操作的完整代码

<!DOCTYPE HTML>
<html lang="en-IN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
  <script type="text/javascript" src="jquery1.7.2.js"></script>
<body>
<style type="text/css">
  table td {
    border: 1px solid #666;
  }
</style>
  <script type="text/javascript">
  jQuery(document).ready(function() {
    jQuery("#add-line").click(function() {
      var row = jQuery('.form-fields tbody>tr:last').clone(true);
      row.find("input:text").val("");
      row.insertAfter('.form-fields tbody>tr:last');
      return false;
    });
    jQuery('#remove-row').live('click',function(event){
      jQuery(this).parent().parent().remove();
    });
  });
</script>

  <div id="form">
  <table id="form-headings">
    <tr>
      <td width="15%">Remove Rows</td>
      <td width="15%">Product</td>
      <td width="16%">Description</td>
      <td width="13%">Unit Cost</td>
      <td width="14%">Quantity</td>
      <td width="12%">Discount</td>
      <td width="14%">Total</td>
    </tr>
  </table>
  <div class="row">
  <div class="form-fields">
    <table>
      <tr>
        <td><input type="button" id="remove-row" value="Remove Row" /></td>
        <td><input type="text" id="form_product" size="5px"/></td>
        <td><input type="text" id="form_description" size="5px"/></td>
        <td><input type="text" id="form_unit_cost" size="5px"/></td>
        <td><input type="text" id="form_quantity" size="5px"/></td>
        <td><input type="text" id="form_discount" size="5px"/></td>
        <td><input type="text" id="form_total" size="5px"/></td>
      </tr>
    </table>
  </div>
  </div>
  <input type="button" id="add-line" value="Add Line" />
  </div>
</body>
</html>

表td{
边框:1px实心#666;
}
jQuery(文档).ready(函数(){
jQuery(“#添加行”)。单击(函数(){
var row=jQuery('.formfields-tbody>tr:last').clone(true);
row.find(“输入:文本”).val(“”);
row.insertAfter('.formfields-tbody>tr:last');
返回false;
});
jQuery(“#删除行”).live('click',函数(事件){
jQuery(this.parent().parent().remove();
});
});
移除行
产品
描述
单位成本
量
优惠
全部的

这是因为删除表中最后一行时,您没有可克隆的tr

在代码中,您正在克隆并将其附加到表中

更新代码

你的代码的这一部分也是错误的

var row jQuery('.form-fields tbody>tr:last').clone(true);
row.insertAfter('.form-fields tbody>tr:last');
因为一旦删除最后一行,您将找不到tr>last。。它将返回false。。所以试着避开它

您可以创建一个包含此行结构的虚拟行,然后从那里克隆它

我创建了一个.prototype类来保存行。。克隆它并将其插入


选中

,这是因为删除表中最后一行时,您没有可克隆的tr

在代码中,您正在克隆并将其附加到表中

更新代码

你的代码的这一部分也是错误的

var row jQuery('.form-fields tbody>tr:last').clone(true);
row.insertAfter('.form-fields tbody>tr:last');
因为一旦删除最后一行,您将找不到tr>last。。它将返回false。。所以试着避开它

您可以创建一个包含此行结构的虚拟行,然后从那里克隆它

我创建了一个.prototype类来保存行。。克隆它并将其插入


选中

当您单击
#添加行
按钮时,它将克隆表中的最后一行并将其插入表的末尾。删除所有行后,此操作不起作用,因为没有要克隆的最后一行(该行不存在)。此外,您将在最后一行之后插入克隆,该行同样不存在,因此它不会在任何地方插入克隆

我建议使用jQuery创建新行,根据需要分配属性,然后将其附加到
tbody

像这样的方法应该会奏效:

var row =
    jQuery('<tr/>')
    .append(jQuery('<td/>')
        .append('<input/>', {
            type: text,
            ...
        })
    .append(...)
    ...
    .appendTo('.form-fields tbody')
;
var行=
jQuery(“”)
.append(jQuery(“”)
.附加(“”{
类型:文本,
...
})
.append(…)
...
.appendTo(“.form fields tbody”)
;

另一个选项是创建一个示例行,您可以创建一个克隆,然后将该示例行附加到
tbody
中。您可以在标记中使用
display:none
,或者您可以创建该示例行并在JavaScript中使用该示例行。

当您单击
\addline
按钮时,它将克隆last行并将其插入表的末尾。删除所有行后,此操作不起作用,因为没有要克隆的最后一行(该行不存在)。此外,您将在最后一行之后插入克隆,该行同样不存在,因此不会将其插入任何位置

我建议使用jQuery创建新行,根据需要分配属性,然后将其附加到
tbody

像这样的方法应该会奏效:

var row =
    jQuery('<tr/>')
    .append(jQuery('<td/>')
        .append('<input/>', {
            type: text,
            ...
        })
    .append(...)
    ...
    .appendTo('.form-fields tbody')
;
var行=
jQuery(“”)
.append(jQuery(“”)
.附加(“”{
类型:文本,
...
})
.append(…)
...
.appendTo(“.form fields tbody”)
;

另一个选项是创建一个示例行,您可以创建一个克隆,然后将该示例行附加到
tbody
。您可以在标记中使用
display:none
,或者您可以创建该示例行并在JavaScript中使用该示例行。

首先,没有可克隆的行。您可以通过ei来防止这种情况要么动态创建,要么在隐藏的div中保留一行,然后克隆该行


然后,您告诉JQuery在最后一个TR之后插入,但没有剩余的TR。将其更改为追加到表:
$('.form fields tbody')。追加(行);

首先,没有剩余的行可克隆。您可以通过动态创建该行,或者在隐藏的div中保留一行,然后克隆该行来防止这种情况


然后,您告诉JQuery在最后一个TR之后插入,并且没有剩余的TR。将其更改为追加到表:
$('.form fields tbody')。追加(行)

那么怎么做?解决这个问题的最佳解决方案是什么?@sushanta reddy好的..好的,它在这里工作。你能告诉我这里的原型有什么用吗?它是用来存储要添加的行的结构的,然后怎么做?解决这个问题的最佳解决方案是什么?@sushanta reddy好的..好的,它在这里工作。你能告诉我什么是t吗这里的原型是用来存储要添加的行的结构的