我的页面上有几个div(大约100个)类'checkboxViewset'。我尝试使用类名选择器对div进行按钮调用,如下所示:
$('.checkboxViewset').buttonset();
这最终会占据整个页面。所以我试图通过使用选择器来实现这一目的,而不是使用每个循环来定位id,如下所示:
$('[id^=viewBoxlatest_]').each(
function (index)
{
$(this).buttonset();
}
);
这仍然会在页面上保留其他所有内容。是否有任何解决方案使这些调用异步,而不是阻止页面中的所有其他活动?
答案 0 :(得分:1)
冒着不给你太多希望的风险......
可以说任何javascript语句都“支持”在同一个事件线程中(按时间顺序)之后的所有其他语句,并且可能(因为javascript是单线程的)整个未来线程。
考虑到这一点,我认为这里的重点不在于.buttonset()
保持其他所有内容,但它很慢(当应用于100个容器时)并且除非你能够,否则其固有的缓慢是不可克服的查找/编写运行速度更快的替代插件。
更明显性能的最现实希望是更改执行顺序,使$('.checkboxViewset').buttonset();
语句在当前保持的代码之后执行。
尝试以下方法:
window.onload = function(){...}
处理程序中。这里的惩罚是用户很可能在应用buttonset()
样式之前获得无格式内容Flash(FOUC)。编辑:
完全在另一个思路上,您可以尝试提供单个div的按钮,使用.buttonset()
设置样式,然后将其克隆99次以制作100.此方法的可行性当然取决于您的div在结构上是相同的,不需要它们自己唯一的ID /值/数据。