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 に答える