javascript - 如何避免使用 jQuery 附加到 <tbody> 的新 <tr> 中除了第一个之外的其余 <td> ?

标签 javascript jquery html-table jquery-clone

我有一个 HTML 格式的表格。实际上可以存在许多具有不同 ID 的此类表。我使用 jQuery 单击按钮添加一个新的表行。该表有六列。页面加载时出现的表格的第一行在所有六列中都包含 HTML 元素。下一行包含第一列中的“添加”按钮以及其他五个 <td></td>当我单击此“添加”按钮时,我想附加一个新行,其中仅包含第一个 <td>及其 HTML 元素和其他五个 <td></td>不应该显示。如何实现这一目标? 我的 HTML 如下:

<table id="blacklistgrid_1"  class="table table-bordered table-hover table-striped">
  <thead>
    <tr>
      <th style="vertical-align:middle">Products</th>
      <th style="vertical-align:middle">Pack Of</th>
      <th style="vertical-align:middle">Quantity</th>
      <th style="vertical-align:middle">Volume</th>
      <th style="vertical-align:middle">Unit</th>
      <th style="vertical-align:middle">Rebate Amount</th>
    </tr>
  </thead>
  <tbody class="apnd-test">
    <tr id="reb1_1">
      <td>
        <div class="btn-group">
          <select name="product_id_1[1]" id="product_id_1_1" class="form-control prod_list">
            <option value=""  selected='selected'>Select Product</option>
          </select>
        </div>
      </td>
      <td>
        <input type="text" name="pack[1]" id="pack_1" value="" class="form-control" size="8"/>
      </td>
      <td>
        <input type="text" name="quantity[1]" id="quantity_1" value="" class="form-control" size="8"/>
      </td>
      <td>
        <input type="text" name="volume[1]" id="volume_1" value="" class="form-control" size="8"/>
      </td>
      <td>
        <div class="btn-group">
          <select name="units[1]" id="units_1" class="form-control">
            <option value=""  selected='selected'>Select Unit</option>
            <option value="5" >Microsecond</option>
            <option value="7" >oz</option>
            <option value="9" >ml</option>
            <option value="10" >L</option>
            <option value="12" >gms</option>
          </select>
        </div>
      </td>
      <td>
        <input type="text" name="amount[1]" id="amount_1" value="" class="form-control" size="9"/>
      </td>
    </tr>
  </tbody>
  <tfoot>
    <tr id="reb1_2">
      <td><button style="float:right; margin-bottom: 20px" class="products" type="button" class="btn btn-default" onclick="">&nbsp;Add</button></td>
      <td colspan="5"></td>
    </tr>
  </tfoot>                                           
</table>

我编写的用于附加新行的 jQuery 函数如下:

$(function () {
//function to create new row in add rebate by product grid 
  $(document).delegate('.products','click',function (e) {
    var table_id = $(this).closest('table').attr('id');
    var no = table_id.match(/\d+/)[0];            
    var first_row = $('#'+table_id).find('tbody tr:first').attr('id');
    var new_row = $('#'+first_row).clone();
    var tbody = $('#' + table_id + ' tbody');
    var n = $('tr', tbody).length  + 1;
    new_row.attr('id', 'reb' + no +'_'+ n);    

    $(':input', new_row).not('.prod_list').remove();
    $('select', new_row).attr('name','product_id_'+no+'['+n+']');
    $('select', new_row).attr('id','product_id_'+no+'_'+n);
    $('<button style="color:#C00; opacity: 2;margin-top: 6px;" type="button" class="close delete" data-dismiss="alert" aria-hidden="true">&times;</button>').appendTo( $(new_row.find('td:first')) );
    tbody.append(new_row);

    //function to delete row from add rebate by product grid 
    $('.delete').on('click', deleteRow);      
  });  
});

我能够在页面上显示的每个表中成功附加新表行。这没有问题。我想要解决的问题是 <td></td> 的其余部分不应显示在新添加的行中。由于这些空白<td></td>该表对用户来说似乎不完整。那里只应显示第一列。如何实现这一目标?有人可以在这方面帮助我吗?我正在使用 jquery-1.9.1.min.js。
我的jsFIddle

在 jsFiddle 中,表格边框不显示,但在我的工作实例中却显示。我不想显示那些空白 <td></td> s。

enter image description here

最佳答案

将此行添加到 jQuery 函数中紧跟语句 tbody.append(new_row);

$(new_row).children('td').not('td:eq(0)').remove();

希望对您有帮助。

关于javascript - 如何避免使用 jQuery 附加到 <tbody> 的新 <tr> 中除了第一个之外的其余 <td> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566579/

相关文章:

javascript - 如何淡入淡出更改文本

javascript - jQuery ajax 从另一台服务器加载 html

javascript - Div 出现在页面加载时

jquery - 使用 JQuery 循环遍历表中第一行的每一列

javascript - 在即将发布的 2.0 版本之前学习/实现 AngularJS

javascript - 需要黑客在网站上实现音乐播放器

javascript - PHP/JS : Summarize ajax requests

html - 无法将表格布局转换为 DIV

jquery - 使用 jQuery 切换列表/ GridView

javascript - 如果容器宽度、填充和行高已知,如何计算高度?