我试图加载一堆图像递归,它在所有的浏览器除了神遗忘的IE完美的作品,因为13次递归的限制。jQuery递归图像加载和IE
现在我可以自己解决这个问题,但我确实想遵循“最佳实践”,可以这么说,因为我仍在学习jQuery。我猜在这里的专家可以给出一个有用的指针。 你会如何解决它?
我的代码片段:
$(document).ready(function(){ loadThumbs(["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg", "9.jpg","10.jpg","11.jpg","12.jpg","13.jpg","14.jpg","15.jpg", "16.jpg","17.jpg","18.jpg","19.jpg","20.jpg"], 0); }); function loadThumbs(files, index){ if(index == files.length) return; var file = files[index]; var image = new Image(); $(image) .load(function(){ $("#container").append(image); loadThumbs(files, index+1); }) .addClass("thumb") .attr("src", file); }
如果你试试这个在IE(8在我的情况),你会得到堆栈溢出错误。
谢谢!
也许我只是不明白它,但你如何停止递归? – Dalen 2011-02-18 11:49:22
只是一个说明,你为什么使用递归?一个简单的循环遍历数组中的项目就可以了。 – Ozzy 2011-02-18 11:54:01
该死的,我的坏。我忘了我取消了停止条件。在函数的开头我会做“if(index == files.length)return;”所以停止递归不是问题所在。即使在所有20个文件加载完毕后停止,所有浏览器都会正确显示页面,并且IE在13次递归后失败。 – 2011-02-18 13:31:58