首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从DOM中删除行后更新jQuery表排序插件

从DOM中删除行后更新jQuery表排序插件
EN

Stack Overflow用户
提问于 2009-12-15 05:58:44
回答 6查看 27.8K关注 0票数 20

目前,我有一些代码可以隐藏已删除的行,然后使用.remove()函数将其删除。

然而,我很难使它保持“删除”,因为每次我刷新我正在使用的表排序分页插件或筛选器插件插件。删除的行会重新出现,当然,它们是被缓存的。

当前的代码只是简单的小部件更新

$('.deleteMAP').live("click", function(){
  $(this).closest('tr').css('fast', function() {
 $(this).remove();
 $(".tablesorter").trigger("update");
 $(".tablesorter").trigger("applyWidgets");
  });
})

有没有办法从分页插件和表排序插件的缓存中删除“行”,以便当我“更新”表以反映行已被删除的事实时,它们不会通过缓存重新出现!

EN

回答 6

Stack Overflow用户

发布于 2010-01-06 22:34:02

我找到了一个对我有效的解决方案:

var usersTable = $(".tablesorter");
usersTable.trigger("update")
  .trigger("sorton", [usersTable.get(0).config.sortList])
  .trigger("appendCache")
  .trigger("applyWidgets");

将它放在您编辑表格的位置之后。

票数 18
EN

Stack Overflow用户

发布于 2011-05-18 20:23:26

当你同时使用tablesorterpager和tablesorterfilter插件时,事情会变得棘手:

$("#gridTable").trigger("update").trigger("appendCache").trigger("applyWidgets");

仅适用于分页程序,筛选器有另一个缓存。我已经寻找了将近2个小时的解决方案,最后我写了这样的东西:

$("#deleteRowButton").click( function(){
  // index of row which will be deleted
  var index = $('#gridTable tr[rel="'+$("#removeThisID").val()+'"]').index();
  // table with tablesorter
  var table = document.getElementById( 'gridTable' ).config.cache.row;
  // deleting row
  $('#gridTable tr[rel="'+$("#removeThisID").val()+'"]').remove();
  // truly DELETING row, not only mark as deleted - after this list of rows should look like [tr], [tr], [tr], undefined, [tr], ...
  delete( table[index] );
  // tablesorter things
  $("#gridTable").trigger("update").trigger("appendCache").trigger("applyWidgets");
});

我正在删除具有与input#removeThisID值相同的rel属性的行。

现在是时候修改tablesorterfilter插件了。在doFilter函数中,查找行:

// Walk through all of the table's rows and search.
// Rows which match the string will be pushed into the resultRows array.
var allRows = table.config.cache.row;
var resultRows = [];

并将其替换为:

// Walk through all of the table's rows and search.
// Rows which match the string will be pushed into the resultRows array.
var allRows = table.config.cache.row;

// refresh cache 'by hand'
var newcache = new Array();
var i = 0;        
for( var a in allRows )
{
  newcache[i] = allRows[a];
  i++;
}
allRows = newcache;
var resultRows = [];

就这样..。

来自波兰的问候:)

票数 4
EN

Stack Overflow用户

发布于 2012-01-25 17:27:40

这似乎是一种奇怪的方法,但实际上它对我很有效。表格呈现正常,分页程序工作正常。

$("#tabeBodyId").empty();
$("#tableId colgroup").remove();

//Update table(done using Ajax)
$("#tableId").tablesorter({widthFixed: true}).tablesorterPager({container: $("#pager")}); 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1903788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档