0

请帮我解决这个问题:

这组代码中有不确定的迭代次数:

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) 的原始值保留在函数调用中,即设置事件调用的迭代运行时的值?

谢谢

*对不起,长标题

4

1 回答 1

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方法(更多内容请在此处阅读):

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);
        })
    }
于 2012-04-18T16:14:22.620 回答