Javascript jQuery UI.buttonset()太慢

Javascript jQuery UI.buttonset()太慢,javascript,jquery,html,performance,jquery-ui,Javascript,Jquery,Html,Performance,Jquery Ui,我在一个HTML页面上有几千个按钮。运行$(“.buttonset”).buttonset()需要10秒以上已准备好文档。有没有更快的方法来实现这一点,或者是我唯一的解决方案来限制按钮的数量?对于buttonset()设置数千个按钮所需的速度,您无能为力,但是,如果10秒的问题是浏览器消息说页面已无响应,则可以通过setTimeout调用将操作分解为异步操作 $(".buttonset").buttonset(); 将成为: $(".buttonset").each(function(inde

我在一个HTML页面上有几千个按钮。运行
$(“.buttonset”).buttonset()需要10秒以上已准备好文档。有没有更快的方法来实现这一点,或者是我唯一的解决方案来限制按钮的数量?

对于
buttonset()
设置数千个按钮所需的速度,您无能为力,但是,如果10秒的问题是浏览器消息说页面已无响应,则可以通过setTimeout调用将操作分解为异步操作

$(".buttonset").buttonset();
将成为:

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

我已经在数千个jQuery UI对象中成功地使用了这种模式,虽然它不会加快操作速度,但它会防止页面锁定,从而让人觉得它工作得更快。

在第一次显示之前,根据需要创建
按钮集

我刚刚测试了2400个盒子,分成12个部分。它使用Chrome 23、Firefox 17、IE9和Opera 12在我的i7上平稳运行

这可能会在您第一次打开复选框组时增加一个拆分加载时间,但在必要时才创建未使用的样式按钮,从而节省一些RAM


我想你已经知道这个问题的答案了。为了满足我的好奇心,你能告诉我们为什么你需要在一个页面上有那么多按钮吗?我对数千个运行速度更快的jquery对象进行操作。你的buttonset函数中有什么?@dystroy:我相信他说的是
buttonset()
jQuery UI方法。我认为在这种情况下,定制解决方案开始变得更可取。或者像其他人建议的那样减少按钮的数量。一个网页中有数千个按钮?我会使用分页。现在,由于您有了某种过滤功能,我会在即将显示组时按需创建按钮集。IE9上仍会显示浏览器无响应消息并冻结Firefox,处理超时比不处理超时需要更长的时间,但如果它起作用……我想这就是解决方案。您还可以构建按钮集的HTML以匹配jquery ui最终生成的内容,然后单击run
buttonset
,然后重新单击。当然,我不是指所有内容,只需创建jQueryUI插入的
包装器和其他东西,这样按钮就可以在成为小部件之前通过jQueryUI的样式表进行样式化。哦,是的,标签内的跨度,我会看一下<代码>=]
这里有一个与UI生成的HTML结构类似的提琴:。除了创建它们时的初始开销外,我没有注意到性能上有多大差异,我想UI处理得更好<代码>:P
否则,定制插件将是最佳的优化方式。