我真的不知道我发生了什么事..
代码如下:
for (var j=0; j<tours.length; j++){
var name = tours[j].name;
var $tourLI = $('<li id="'+name+'"></li>');
var $tourButton = $('<div class="button-inside"><span>'+name+'</span><span></span></div>');
$tourButton.click(function() {
alert(name);
}
}
我试图为每个显示游览名称的按钮绑定单击事件,但无论我单击哪个按钮,始终显示最后一个游览名称。
我究竟做错了什么?
Thanks!
您需要将点击处理程序包装在闭包中以“关闭”变量的值name
在 for 循环继续之前。
这是因为处理程序在您单击它之前不会真正执行,所以否则它将简单地使用当前值name
当时(无论循环中的最后一个值是什么)。
for (var j=0; j<tours.length; j++){
var name = tours[j].name;
var $tourLI = $('<li id="'+name+'"></li>');
var $tourButton = $('<div class="button-inside"><span>'+name+'</span><span></span></div>');
(function(n) {
$tourButton.click(function() {
alert(n);
});
})(name)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)