基本的问题,但我一直在敲打我的头,所以想到id把它带到这里.
html看起来像这样(编辑,修复收尾报价)
<span class='deleteimage-119'>delete</span>
<span class='deleteimage-120'>delete</span>
<span class='deleteimage-121'>delete</span>
<span class='deleteimage-122'>delete</span>
<span class='deleteimage-123'>delete</span>
javascript/jquery看起来像这样
iids = ['119','120','121','122','123'];
for (i=0; i<iids.length; i++) {
        place = iids[i];
        $(".deleteimage-" + place).click(function () {
                alert(place);
             });
    }
点击功能会附加到每个单独的范围,但单击后的警报会显示数组中的最后一项.
你有一个范围问题.当回调触发时,place具有循环中的最后一个值.
您需要为闭包创建一个新变量; 每次迭代一个变量,然后每个变量将由闭包"捕获"并在回调中使用.
如果解决方案是这样的话会很好:
var iids = ['119','120','121','122','123']; // don't forget `var` please
for (var i=0; i<iids.length; i++) {
   var place = iids[i]; // local variable?
   $(".deleteimage-" + place).click(function () {
       alert(place);
   });
}
唉,Javascript没有块范围,因此这里仍然只有一个变量被调用place,并且随着循环运行它会不断更新.
所以,你必须使用一个函数:
var iids = ['119','120','121','122','123'];
function f(place) {
   // NOW `place` is a local variable.
   $(".deleteimage-" + place).click(function () {
       alert(place);
   });
}
for (var i=0; i<iids.length; i++) {
   f(iids[i]);
}
有更简洁的方法来使用闭包和绑定变量来使用这种函数方法,其他答案很好地涵盖了那些更简洁的方法.我的回答集中在解释这个问题上.