以下のボタンは、クリックするとコンソールに数値を出力します。 Fire 1は1を出力し、Fire 2は出力2を出力します。forループ内のjQueryクリック関数にカウンタを渡す
私はループを使用してfire(n)
を呼び出す関数に1-4を渡していますが、ボタンのどれかをクリックしても出力が得られません。私はthis questionの答えに従ってみましたが、それは私のために働いていません。
私がfor
ループの代わりにコメントアウトしたコードを使用すると、すべて正常に動作します。 for
ループを使用すると、これはなぜ機能しませんか?
function fire(n) {
console.log(n);
}
for (var i = 1; i <= 4; ++i) {
$("#fire" + i).on("click", fire(i));
}
/*
$("#fire" + 1).on("click", function(){fire(1)});
$("#fire" + 2).on("click", function(){fire(2)});
$("#fire" + 3).on("click", function(){fire(3)});
$("#fire" + 4).on("click", function(){fire(4)});
*/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="fire1">Fire 1</button>
<button id="fire2">Fire 2</button>
<button id="fire3">Fire 3</button>
<button id="fire4">Fire 4</button>
';'あなたはfire' [JavaScriptのクロージャは、内部ループのコールバック –
可能性のある重複したとして、それを設定していない '呼んでいる - シンプルな実用的な例](http://stackoverflow.com/questions/750486/javascript-closure-inside-loop-simple-practical-example) –
この例では 'for'を使用する必要はありません –