如何在for循环中维护迭代变量的原始值,该循环设置迭代值是函数一部分的事件调用?

时间:2012-04-18 16:10:32

标签: javascript jquery

请帮我解决这个问题:

这组代码中有一些未确定的迭代次数:

var c = 1;
for(c=1; c<x; c++){
    $('#'+l_id+'_'+c).on("keypress", function(f){
        com_guide_add_li((c+1), $(this).parent().parent().attr('id'), f);
    })
}

问题在于,当调用事件时,(c + 1)是最后一次迭代的值+ 1,而不是在此代码运行的迭代期间某处的值。

如何确保(c + 1)的原始值保留在函数调用中,即设置事件调用的迭代运行时的值是什么?

由于

*对不起长标题

1 个答案:

答案 0 :(得分:0)

我认为这应该有效,早期的约束应该照顾它。

var c = 1;
for(c=1; c<x; c++){¡   
     var tmp_var = c;        
     $('#'+l_id+'_'+c).on("keypress", function(f){                  
        com_gude_add_li((tmp_var+1), $(this).parent().parent().attr('id'), f);
    })
}

如果有帮助,请告诉我。

选项2

由于您使用的是jquery,因此可以使用data方法(更多内容来阅读here):

var c = 1;
    for(c=1; c<x; c++){¡   
        $('#'+l_id+'_'+c).data("c", c);
        $('#'+l_id+'_'+c).on("keypress", function(f){            
            com_gude_add_li(($(this).data("c") + 1), $(this).parent().parent().attr('id'), f);
        })
    }