jquery调用按钮集,保持其他一切
jquery call to buttonset holding up everything else
我的页面上有几个div(大约100个左右)类'checkboxViewset'。我尝试使用类名选择器对div 进行按钮集调用,如下所示:
$('.checkboxViewset').buttonset();
这最终会占用整个页面。因此,我尝试通过使用选择器来定位ids而不是使用每个循环来执行此操作,如下所示:
$('[id^=viewBoxlatest_]').each(
function (index)
{
$(this).buttonset();
}
);
这最终仍然会保留页面上的其他所有内容。是否有任何解决方案可以使这些调用异步,而不是保留页面中的所有其他活动?
冒着不给你太多希望的风险....
可以说,任何 javascript 语句都"保留"了在同一事件线程中(按时间顺序)出现的所有其他语句,并且可能(因为 javascript 是单线程的)整个未来线程。
考虑到这一点,我认为这里的重点不是.buttonset()
保持其他所有内容,而是它很慢(当应用于 100 个容器时),并且它固有的缓慢是无法克服的,除非您能够找到/编写运行更快的替代插件。
获得更好的表观性能的最现实希望是更改执行顺序,以便$('.checkboxViewset').buttonset();
语句在当前保存的代码之后执行。
尝试以下操作:
- 将语句移动到它所在的事件处理程序的底部。
- 将语句放在其自己的延迟触发的 $(function(){...}) 处理程序中。
- 将 jQuery 的其余部分放在 $(function(){...}) 处理程序中,将语句放在它自己的
window.onload = function(){...}
处理程序中。这里的惩罚是,用户很可能会在应用样式之前获得无样式内容的 Flashbuttonset()
FOUC。
编辑:
在另一个思路上,你可以尝试提供单个div的按钮,用.buttonset()
来设计它,然后克隆它99次,使100个。这种方法的可行性当然取决于您的div在结构上相同,并且不需要它们自己唯一的ID/值/数据。
相关文章:
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Ajax调用,发送图像和其他数据
- 使用metro-uiJS对话框调用其他文件html
- 无法在其他调用上设置jQuery对话框选项
- 在Jquery调用之间添加其他函数
- 节点.js“已调用回调”.但是没有任何其他回调
- 如果条件,则在其他操作之后调用 Redux 操作
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- 这个关键字位于$.ajax()中,用于调用其他函数来设置url
- 如何从电子邮件内容中调用具有隐藏参数的其他网页
- 调用geocomplete中的其他函数
- 如何在Javascript中创建一个调用其他函数的函数
- Ajax调用正在将数据插入页面的其他位置
- JS脚本由1个元素调用,而不是由其他3个元素调用
- Meteor-如何从其他JS文件中调用外部类方法
- 我用脚本创建了一个按钮.我可以通过点击按钮调用其他函数吗?我这样做,但失败了
- setInterval 的首次调用计时与其他调用不同
- jQuery: $.when 延迟的 AJAX 调用 — 一个失败的调用会取消其他调用
- 递归函数会导致其他调用多次激发
- 当URL具有相同的响应时间时,为什么某些AJAX调用比其他调用需要更长的时间才能完成