我在页面上有数百个共享类的元素,我需要优化应用程序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();
}
});
这仍然不起作用?
答案 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()
来切换元素的可见性。如果您想要想象,您可以尝试仅为用户可见的元素设置动画。