隐藏/显示*非常*慢

时间:2011-07-28 14:52:36

标签: jquery css show

我目前正在使用jQuery中的hide / show函数来帮助从一个选择框中将表格过滤成组。

实际代码工作正常,但速度极慢,有时需要花一两分钟才能执行。

我切换代码而不是hide()和show()它使用css({'display':'none'});css({'display':'block'}); - 速度差异简直令人难以置信,现在只需几秒钟,但在Firefox中表格数据全部按每行压扁。

这不是世界末日,因为我们几乎完全使用Internet Explorer,但我仍然想知道是否有办法绕过它,因为相当多的人(包括我自己)都使用Firefox。

3 个答案:

答案 0 :(得分:4)

在firefox中显示/隐藏表格行,你必须设置以下内容。

//To show
$("tr").css("display", "table-row");

//To hide
$("tr").css("display", "none");

答案 1 :(得分:1)

jQuery API指定可以为.show和.hide函数设置持续时间。我怀疑当你设置它时它可以解决你的问题。

请参阅the docs for .show()

请参阅the docs for .hide()

答案 2 :(得分:1)

提到show()和hide()的持续时间的答案是好的。但是,如果行数太多,show()display: blockdisplay: table-row之间的区别在于show()为每行运行动画。这肯定会变慢,特别是在较大的桌子上。

如果您真的试图挤出性能,请尝试查看jqGrid或SlickGrid的源代码。后者具有疯狂快速的过滤功能,肯定会起作用。如果您太过牵扯,请使用display: blockdisplay: table-rowdisplay: none。你甚至可以创建自己的jQuery插件,它可以显示showFast和hideFast,所以你不必重复那段代码。