Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对buttonset的jquery调用会阻塞其他所有内容_Javascript_Jquery - Fatal编程技术网

Javascript 对buttonset的jquery调用会阻塞其他所有内容

Javascript 对buttonset的jquery调用会阻塞其他所有内容,javascript,jquery,Javascript,Jquery,我的页面上有几个“checkboxViewset”类的div(大约100个)。我尝试使用类名选择器对div进行buttonset调用,如下所示: $('.checkboxViewset').buttonset(); 这最终会占据整个页面。所以,我尝试通过使用选择器来实现这一点,方法是将ID作为每个循环的目标,如下所示: $('[id^=viewBoxlatest_]').each( function (index) { $(this).buttonset()

我的页面上有几个“checkboxViewset”类的div(大约100个)。我尝试使用类名选择器对div进行buttonset调用,如下所示:

$('.checkboxViewset').buttonset();
这最终会占据整个页面。所以,我尝试通过使用选择器来实现这一点,方法是将ID作为每个循环的目标,如下所示:

$('[id^=viewBoxlatest_]').each(
     function (index)
     {
        $(this).buttonset();
     }
);

这仍然会在页面上保留其他所有内容。是否有任何解决方案可以使这些调用异步,而不是停止页面中的所有其他活动

冒着没有给你多少希望的风险

可以说,在同一事件线程中,任何javascript语句都“保留”了它后面的所有其他语句(按时间顺序),并且可能(因为javascript是单线程的)保留了它们的全部未来线程

考虑到这一点,我认为这里的要点并不是说
.buttonset()
支持其他所有功能,而是它的速度很慢(应用于100个容器时),而且它固有的速度很慢是无法克服的,除非你能找到/编写一个运行更快的替代插件

要获得更好的外观性能,最现实的希望是更改执行顺序,使
$('.checkboxViewset').buttonset()语句在其当前保存的代码之后执行

请尝试以下操作:

  • 将语句移动到它所在的事件处理程序的底部
  • 将语句放在它自己的延迟触发$(function(){…})处理程序中
  • 将jQuery的其余部分放在$(function(){…})处理程序中,将语句放在它自己的
    window.onload=function(){…}
    处理程序中。这里的惩罚是,在应用
    buttonset()
    样式之前,用户很可能会得到一个未设置样式的内容(FOUC)
编辑:


完全按照另一种思路,您可以尝试为一个div的按钮提供服务,使用
.buttonset()
对其进行样式化,然后将其克隆99次,使其成为100。这种方法的可行性当然取决于您的div在结构上是相同的,并且不需要它们自己独特的id/值/数据。

冒着给您带来不多希望的风险

可以说,在同一事件线程中,任何javascript语句都“保留”了它后面的所有其他语句(按时间顺序),并且可能(因为javascript是单线程的)保留了它们的全部未来线程

考虑到这一点,我认为这里的要点并不是说
.buttonset()
支持其他所有功能,而是它的速度很慢(应用于100个容器时),而且它固有的速度很慢是无法克服的,除非你能找到/编写一个运行更快的替代插件

要获得更好的外观性能,最现实的希望是更改执行顺序,使
$('.checkboxViewset').buttonset()语句在其当前保存的代码之后执行

请尝试以下操作:

  • 将语句移动到它所在的事件处理程序的底部
  • 将语句放在它自己的延迟触发$(function(){…})处理程序中
  • 将jQuery的其余部分放在$(function(){…})处理程序中,将语句放在它自己的
    window.onload=function(){…}
    处理程序中。这里的惩罚是,在应用
    buttonset()
    样式之前,用户很可能会得到一个未设置样式的内容(FOUC)
编辑:


完全按照另一种思路,您可以尝试为一个div的按钮提供服务,使用
.buttonset()
对其进行样式化,然后将其克隆99次,使其成为100。这种方法的可行性当然取决于您的div在结构上是相同的,并且不需要它们自己唯一的id/值/数据。

我们可以了解buttonset()的功能吗?@Angel:buttonset()是Jquery UI框架的一部分。请参阅我们可以了解buttonset()的功能吗?@Angel:buttonset()是Jquery UI框架的一部分。请参考《谢谢你的建议》。真的很感激。我将尝试晚一点启动buttonset调用。我认为FOUC比用户等待(似乎是无限期等待)更容易接受。谢谢你的建议。真的很感激。我将尝试晚一点启动buttonset调用。我认为FOUC比用户等待(似乎是无限期的等待)更容易接受。