优化jQuery切换数百个元素

时间:2011-10-08 19:46:06

标签: jquery dom toggle

我在页面上有数百个共享类的元素,我需要优化应用程序jQuery Toggle()以防止浏览器在应用函数时锁定,如下所示:

$j('.textDate').toggle() //this locks up this browser

单击此函数会导致浏览器锁定并冻结 - 所以我试图将其分解为循环并单独在每个元素上运行该函数,而不是我需要弄清楚数组的超时/分解防止浏览器冻结:

$j('#showDatesCheckbox').click(function(){
    var textdate = $j('.textDate'); //1000+ elements
    for(var i = 0; i < textdate.length; i++)
    {
          $j(textdate[i]).toggle();
    }
});

这仍然不起作用?

2 个答案:

答案 0 :(得分:1)

就像一个问题。

如何var $textDates = $('.textDate');缓存结果。

然后,您可以稍后致电$textDates.addClass('hidden');

缓存列表应该使后续操作更快实现。

我添加了一个jsFiddle.net来玩:http://jsfiddle.net/cRRcC/2/

这会为页面添加30,000个元素(div),然后为您提供隐藏它们的链接。

这种情况似乎不到一秒钟。这个命令会对你有所帮助吗?

谢谢, AE

答案 1 :(得分:0)

在我看来,浏览器中的1000多个元素的动画效果不起作用。为什么不简单地使用$j(textdate[i]).toggle()来切换元素的可见性。如果您想要想象,您可以尝试仅为用户可见的元素设置动画。