使用 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 协议时出错