这是一个非常基本的问题,但是......
我有一些这样的代码
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]); });
}
这应该绑定 divid="blah0"
以在单击时将所有图像更改为'blah.jpg'
。同样,单击 divid ="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”等。
但是,默认情况下,无论我点击哪个“blah”,它都会显示“10”。