jQuery UI .buttonset()太慢了

时间:2012-08-21 18:19:10

标签: javascript jquery html performance jquery-ui

我在HTML页面上有几千个按钮。在准备好文档时运行$(".buttonset").buttonset();需要10秒以上。有没有更快的方法来做到这一点,或者是我唯一能够以某种方式限制按钮数量的解决方案?

2 个答案:

答案 0 :(得分:3)

在第一次显示之前按需创建buttonset

我刚测试了2400个分为12个部分的盒子。它在我的i7上使用Chrome 23,Firefox 17,IE9,Opera 12顺利运行。

这可能会在您第一次打开一个复选框组时添加一个拆分加载时刻,但它会通过在必要时创建未使用的样式按钮来节省一些RAM。

Fiddle

答案 1 :(得分:2)

关于buttonset()设置成千上万个按钮所需的速度,您无法做很多事情,但如果10秒钟的问题是浏览器消息说该页面已无响应您可以使用setTimeout调用将操作分解为异步操作。

$(".buttonset").buttonset();

会变成:

$(".buttonset").each(function(index, button) {
   setTimeout(function() {
       $(button).buttonset();
   }, 0);
});

我已成功使用此模式与数千个jQuery UI对象,虽然它不会加快操作速度,但它会阻止页面锁定,从而使其外观更快。