所以我使用jQuery,我有一个相当大的表,我想做什么(> 100行)。对于每一行,我都想做很多工作,我的问题是如果我有
$('#tableid>tr').each(function(i){some code here});
当我达到5的倍数时我如何停止处理并且首先将效果放在浏览器上以便用户可以与之交互而不是冻结。
非常感谢!
杰森
答案 0 :(得分:0)
答案 1 :(得分:0)
它不是5的倍数,但您可以使用setTimeout对事件进行排队,并让用户在事件触发时与页面进行交互。
类似的东西:
$('#tableid>tr').each( function(i, e){ setTimeout( function(){ OtherFunc(e); }, (100 * i) ) } );
function OtherFunc(e) {
/* processing code */
}
根据需要调整参数(尤其是100ms的增量),但你明白了。
答案 2 :(得分:0)
for(var i=0 ; i<$('#tableid>tr').length ; i+=5){
var sliceEnd = i+4 > $('#tableid>tr').length-1 ? $('#tableid>tr').length-1 : i+4;
$('#tableid>tr').slice(i,sliceEnd).each(function(i){some code here});
}
应该做的伎俩。
答案 3 :(得分:0)
试一试: http://jsfiddle.net/5E3gs/
var $trs = $('#tableid tr');
for(var i = 0, len = $trs.length; i < len; i = i + 5) {
(function(i) {
setTimeout(function() {
$trs.slice(i,i + 5).addClass('yellow');
}, (500 * (i / 5)));
})(i);
};