以下面的代码为例,我想将值“i”传递给回调函数,以便它从正确的 div 中删除该类。目前,这仅将 i 视为循环中的最后一个值。
for(i=0;i<tablelength;i++){
if($('#detailsdiv'+i).is(':visible')){
$('#anotherdiv'+i).slideUp('slow',function(){
$('#div'+i).removeClass('open');
});
}
最佳答案
发生这种情况的原因很简单:向上滑动函数返回并调用回调需要一些时间。事实上,这种类型的函数调用是非阻塞的,for 循环将快速到达最后一个值,并且所有回调将引用最后一个 i
值。
试试这个:
for (index=0; index < tablelength; index++) {
(function(i) {
if ($('#detailsdiv' + i).is(':visible')) {
$('#anotherdiv' + i).slideUp('slow', function() {
$('#div' + i).removeClass('open');
});
}
})(index);
}
这样,我们创建了一个函数,该函数会立即使用一个新的作用域来调用,该新作用域将保存我们的变量。每个函数都使用我们的 for
循环迭代器 index
参数进行调用,并使用其中的 i
变量。
关于javascript - 将循环计数值传递给 JQuery SlideUp 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355730/