いくつかのオブジェクトを動的に作成し、それらにイベントをバインドしたいと思います (どのイベントかは重要ではありません)。
これらのアイテムを区別するために、イベントに番号を渡しています。私のコードがあります:
$('#add_btn').click(function() {
var cont = $('#buttons');
for(var i=0; i<5; i++) {
var new_btn = $('<input>').attr('type', 'button').val(i);
new_btn.click(function() {
alert(i);
});
cont.append(new_btn);
}
});
新しく作成したボタンのどれかをクリックすると、表示される数は5です。
変数は参照渡しだと思いますi
が、問題は、変数の参照渡しを避ける方法です。さらに、イベントをバインドする前に新しい変数を作成しても (そのため、参照は別のオブジェクトを指す必要がありますnew_val = i.toString()
)、値はすべてのボタンで同じです (その 4、理解可能です)。
イベントでアタッチnew_btn.data()
して読み取ることができることはわかっていますが、オーバーヘッドにならないかどうかはわかりません。
jsfiddle へのリンク: http://jsfiddle.net/Jner6/5/。