使用 jquery 动画时出错“第 13 行内存不足”

Posted

技术标签:

【中文标题】使用 jquery 动画时出错“第 13 行内存不足”【英文标题】:Error while using jquery animate "Out of memory at line: 13" 【发布时间】:2011-03-30 21:22:15 【问题描述】:

我正在尝试使用以下代码 (jquery) 显示我的产品动画

var prodNum = <%=prodNum %>;
var i = 1;  
$.timer(5000, function(timer)      
    $(".prods").hide("slide",  direction: "down" , 500, function()  
        $(".prods").html("<div class=\"prod\">" + $("#pr" + ((4*i) % prodNum)).html() + "</div>" + 
                        "<div class=\"prod\">" + $("#pr" + ((4*i + 1) % prodNum)).html() + "</div>" + 
                        "<div class=\"prod\">" + $("#pr" + ((4*i + 2) % prodNum)).html() + "</div>" + 
                        "<div class=\"prod\">" + $("#pr" + ((4*i + 3) % prodNum)).html() + "</div>");
        $(".prods").show("slide",  direction: "down" , 500);
        i++;
     );


);

它在 firefox 上运行良好,但在 IE 中我得到“Out of memory at line: 13” 我怎样才能解决这个问题? 我使用的是 1.4.2 版

【问题讨论】:

还有一件事 - 除了错误消息之外,动画在 IE 中运行良好 【参考方案1】:

找到问题了。

这是 jQuery 和 jQuery.ui 版本之间的可计算性

谢谢

【讨论】:

我在 IE 中遇到了“行内存不足:”问题,仅使用 jquery 1.3.2。我更新到 1.4.2,问题就消失了。你就是这样吗?【参考方案2】:

在你的方法内部而不是在方法内部使用$(".prods"),使用$(this),像这样:

var prodNum = <%=prodNum %>;
var i = 1;  
$.timer(5000, function(timer)      
  $(".prods").hide("slide",  direction: "down" , 500, function()  
    $(this).html("<div class='prod'>" + $("#pr" + ((4*i) % prodNum)).html() + "</div>" + 
                 "<div class='prod'>" + $("#pr" + ((4*i + 1) % prodNum)).html() + "</div>" + 
                 "<div class='prod'>" + $("#pr" + ((4*i + 2) % prodNum)).html() + "</div>" + 
                 "<div class='prod'>" + $("#pr" + ((4*i + 3) % prodNum)).html() + "</div>")
           .show("slide",  direction: "down" , 500);
    i++;
  );
);

当您使用 $(".prods") 时,它会以相互依赖的方式对每个元素进行动画处理(以及时间为 n 元素,因为每个完成队列的 .hide() 也会每其他个新的 .prod 元素排队,它呈指数级复合动画)。由于所有幻灯片动画都在彼此之间,并且每个元素都在排队,IE 不会对同时进行这么多动画感到满意。

【讨论】:

我用 $(this) 替换了 $(".prods") 但我仍然得到同样的错误

以上是关于使用 jquery 动画时出错“第 13 行内存不足”的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic - 使用自定义 GIS 路线绘制动画帧时出错

尝试自定义动画时符合 UIViewControllerAnimatedTransitioning 协议时出错

使用 jQuery 制作动画时失去悬停(不移动鼠标)

使用 jQuery 在向上滚动和向下滚动时添加不同的 CSS 动画

悬停时的 jQuery 动画 |非常快的传球,停止动画

使用jquery制作动画时如何避免兄弟元素抖动