异步each()函数
如果您有非常复杂的文档,其中运行jquery each()函数会在迭代期间锁定浏览器,并且/或者Internet Explorer弹出“ 您想继续运行此脚本 ”消息,那么此解决方案将节省您的时间。
jQuery.forEach = function (in_array, in_pause_ms, in_callback)
{
if (!in_array.length) return; // make sure array was sent
var i = 0; // starting index
bgEach(); // call the function
function bgEach()
{
if (in_callback.call(in_array[i], i, in_array[i]) !== false)
{
i++; // move to next item
if (i < in_array.length) setTimeout(bgEach, in_pause_ms);
}
}
return in_array; // returns array
};
jQuery.fn.forEach = function (in_callback, in_optional_pause_ms)
{
if (!in_optional_pause_ms) in_optional_pause_ms = 10; // default
return jQuery.forEach(this, in_optional_pause_ms, in_callback); // run it
};
使用它的第一种方法就像each()一样:
$('your_selector').forEach( function() {} );
一个可选的第二参数,可以指定在迭代之间的速度/延迟其可以是用于动画有用(下面的例子将等待在迭代之间1秒):
$('your_selector').forEach( function() {}, 1000 );
请记住,由于这是异步工作的,因此您不能依靠迭代来完成下一行代码,例如:
$('your_selector').forEach( function() {}, 500 );
// next lines of code will run before above code is complete
我为一个内部项目编写了此文件,尽管我确定可以对其进行改进,但它可以满足我们的需求,因此希望你们中的一些人觉得它有用。谢谢 -