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

时间:2010-08-17 09:36:25

标签: javascript jquery jquery-ui jquery-animate

我正在尝试使用以下代码(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中我得到“行内存不足:13” 我怎样才能解决这个问题? 我使用的是1.4.2版本

由于

2 个答案:

答案 0 :(得分:1)

发现问题。

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

谢谢

答案 1 :(得分:0)

在方法内部,而不是在方法中使用$(".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个元素,因为每个其他新{{1}完成队列的每个.hide()元素也是,它以指数方式复合动画)。随着所有幻灯片动画彼此之间以及每个元素的排队,IE将不会对这些动画一下子感到满意。