とても初歩的な質問ですが…
このようなコードがあります
var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i<array.length; i++)
{
$('div#blah' + i).click(function() {
$('img').attr('src', arr[i]); });
}
これにより、divがバインドされ、クリックされたときにid="blah0"
すべての画像が変更されます。'blah.jpg'
同様に、 で div をクリックすると、id ="blah1"
すべての画像が に変わります'ha.jpg'
。
ただし、実行時に「i」の値、つまり 2 を使用するため、無名関数は機能しません。これは、いずれかの div をクリックすると、すべての画像を arr[2] に設定しようとすることを意味します。要素(興味深いことに、私のマシンでJSエラーをスローしていませんが、それは別の話です...)。
宣言時に「i」の値を使用して匿名関数を作成するにはどうすればよいですか?
より簡単な例として:
for (var i=0; i<10; i++)
{
$('div#blah'+i).click(function() {
alert(i)); });
}
「blah0」をクリックすると「0」、「blah1」をクリックすると「1」などと表示されます。
ただし、デフォルトでは、どの「何とか」をクリックしても「10」が表示されます。