我了解如何根据使用 jQuery 的 hide() 和 show() 的选择来切换表格中的 tr。这曾经在几百行的情况下非常有效。现在,我需要它来处理 DOM 中的 5000 多个条目。它完全冻结了浏览器。
我的搜索把我带到了 learningjquery.com这里
其中解释了一个“启用/禁用样式表”方法,它应该像一个魅力一样工作。它确实如此,除了它只在 IE9 上像魅力一样工作,只需要一秒钟(如果那样的话)来过滤行。在 chrome 上,相同的操作需要 15-20 秒。
我的问题是 Chrome 被正在为其构建此应用程序的人广泛使用。有人可以建议我如何使这个解决方案在 Chrome 中工作,或者建议其他方法来处理这种情况。
- 我尝试过其他选项,例如 .css('display', 'none')、.addClass() 和 .removeClass() 等。似乎没有什么能让它变得更快。
- 我尝试过数据表,虽然之后速度很快,但最初加载这么多数据需要很长时间。
更新:非常感谢@jfriend00 和@Ohgodwhy。这是我拥有的适用于所有浏览器的最终代码。
$('#tbl_product_details tbody tr').each( function() {
var row = $(this);
row.hasClass("tr_"+cust_id) ? row.removeClass("hide") : row.addClass("hide");
});
虽然,正如公认的答案所示,它可以通过纯 js 进一步改进,并且通过在页面加载时获取 dom 元素,我不需要这样做。代码已经足够快了,我宁愿到处都有 jQuery 代码。