Javascript 将循环计数值传递给JQuery SlideUp回调

Javascript 将循环计数值传递给JQuery SlideUp回调,javascript,jquery,Javascript,Jquery,以下面的代码为例,我希望将值“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=0;

以下面的代码为例,我希望将值“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=0;i发生这种情况的原因很简单:在向上滑动函数返回并调用回调之前需要时间。鉴于这一事实,这种类型的函数调用是非阻塞的,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(索引=0;索引

通过这种方式,我们创建了一个函数,该函数立即被一个新的作用域调用,该作用域将容纳我们的变量。每个函数都用循环迭代器
index
参数调用,并在其中使用
i
变量。

发生这种情况的原因很简单:在重新调用向上滑动函数之前需要时间循环并调用回调。鉴于此,这种类型的函数调用是非阻塞的,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(索引=0;索引

通过这种方式,我们创建了一个函数,该函数立即被一个新的作用域调用,该作用域将容纳我们的变量。每个函数都用循环迭代器
index
参数调用,并在其中使用
i
变量。

发生这种情况的原因很简单:在重新调用向上滑动函数之前需要时间循环并调用回调。鉴于此,这种类型的函数调用是非阻塞的,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(索引=0;索引

通过这种方式,我们创建了一个函数,该函数立即被一个新的作用域调用,该作用域将容纳我们的变量。每个函数都用循环迭代器
index
参数调用,并在其中使用
i
变量。

发生这种情况的原因很简单:在重新调用向上滑动函数之前需要时间循环并调用回调。鉴于此,这种类型的函数调用是非阻塞的,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(索引=0;索引

通过这种方式,我们创建了一个函数,该函数立即用一个新的作用域调用,该作用域将保留我们的变量。每个函数都用循环迭代器
index
参数调用,并在其中使用
i
变量。

您需要这样做:

for(i=0;i<tablelength;i++){
    if($('#detailsdiv'+i).is(':visible')){
        (function(i){
            $('#anotherdiv'+i).slideUp('slow',function(){
            $('#div'+i).removeClass('open');
        })(i);
    });
}

对于(i=0;i您需要这样做:

for(i=0;i<tablelength;i++){
    if($('#detailsdiv'+i).is(':visible')){
        (function(i){
            $('#anotherdiv'+i).slideUp('slow',function(){
            $('#div'+i).removeClass('open');
        })(i);
    });
}

对于(i=0;i您需要这样做:

for(i=0;i<tablelength;i++){
    if($('#detailsdiv'+i).is(':visible')){
        (function(i){
            $('#anotherdiv'+i).slideUp('slow',function(){
            $('#div'+i).removeClass('open');
        })(i);
    });
}

对于(i=0;i您需要这样做:

for(i=0;i<tablelength;i++){
    if($('#detailsdiv'+i).is(':visible')){
        (function(i){
            $('#anotherdiv'+i).slideUp('slow',function(){
            $('#div'+i).removeClass('open');
        })(i);
    });
}

for(i=0;我不太理解这里的问题。我不太理解这里的问题。我不太理解这里的问题。我不太理解这里的问题。