2010-08-17 16 views
2

我试图展示我的产品的动画用下面的代码(jQuery的)Erorr而使用jQuery动画“内存不足时行:13”

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版

感谢

+0

一两件事 - 动画工作正常,在IE之外的错误信息 – junkqwe 2010-08-17 09:38:28

回答

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元素,因为每.hide()完成排队每其他.prod元素,它是指数地复合动画)。随着所有幻灯片动画和每个元素的排队,IE浏览器将不会对这么多的动画同时满意。

+0

我更换了$(“电棒”)与$(this)但我仍然得到相同的错误 – junkqwe 2010-08-17 10:04:28

+0

@junkqwe - 这些元素有多少? – 2010-08-17 10:11:35

1

发现问题。

这是

感谢了jQuery和jQuery.ui版本之间的可计算

+0

我有一个“内存不足:”在IE浏览器的问题只使用jQuery 1.3.2。我更新到1.4.2,问题就消失了。这是发生在你身上的事吗? – MrBoJangles 2010-10-06 22:08:23