【问题标题】:Remove table row in jquery using table name使用表名删除jquery中的表行
【发布时间】:2015-07-21 21:58:13
【问题描述】:

我正在遍历检查过的表行,如果某个参数为真,我想删除当前行,但我到目前为止删除了错误的行。任何帮助表示赞赏。这就是我所拥有的。

$('input[type=checkbox]').each(function() { 
    if (this.checked == true) {
        var del_id = $(this).closest('tr').attr('data-id');

        $.each(del_arr, function(index, value ) {
            if (value == del_id) {
                $('#spreadsheetstable tr:last').remove();
                console.log('Removing :'+  del_id +' And ' + value);
            }
        });
    }
});

【问题讨论】:

  • 可以分享一下html吗?

标签: javascript jquery datatables html-table


【解决方案1】:

类似这样的:

    $('input[type=checkbox]:checked').each(function() {

    var $tr =  $(this).closest('tr');

    var del_id = $(this).closest('tr').attr('data-id');

    $.each(del_arr, function(index, value ) {

        if (value == del_id){
            $tr.remove();
            console.log('Removing :'+  del_id +' And ' + value);
            return false;
        }
    });
})

【讨论】:

  • 问题是您使用的是 tr:last ,这意味着表中的最后一行。我将选择器更新为仅查看已检查的行,然后在您检查行上的 data-id 值的同时(之前的语句)建立要删除的行。返回 false(以防万一您不知道)会中断匹配 id 的数组搜索。
  • 无需遍历$(this).closest('tr')两次,只需将第二次调用替换为$tr即可。
【解决方案2】:

如果您使用 jQuery DataTables,最好使用 DataTables API 方法 row().remove() 删除行,而不是直接操作 DOM。

$('input[type=checkbox]:checked').each(function() {
   var $tr =  $(this).closest('tr');
   var del_id = $tr.attr('data-id');
   $.each(del_arr, function(index, value ) {
      if (value == del_id){
         $('#spreadsheetstable').DataTable().row($tr).remove().draw(false);

         console.log('Removing :'+  del_id +' And ' + value);
         return false;
      }
   });
});

【讨论】:

  • @Gyrocode.com 我正在尝试使用它,但它不起作用?我不知道如何检索数据表的实例。
  • @r3wt,使用$('#example').DataTable() 获取DataTables API 实例,其中example 是您的表ID。
  • @Gyrocode.com 我从来没有使用新的数据表以这种方式工作。我能够让fnDeleteRow() 工作,但我永远无法使用.row().remove()
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多