Javascript 将循环计数值传递给JQuery SlideUp回调
以下面的代码为例,我希望将值“I”传递给回调函数,以便它将该类从正确的div中删除。目前,这只是将I视为循环中的最后一个值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;
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;我不太理解这里的问题。我不太理解这里的问题。我不太理解这里的问题。我不太理解这里的问题。