我需要做以下事情:
首先,在服务器上获取数据paths
。数据包含path
数组,长度未知。
然后我创建了一个list-group
,其中list-group-item
代表path
。
最后,我设置了每个click
的{{1}}函数,该函数在数据数组中显示了相应的list-group-item
。
这是代码
path
但是,无论我点击哪个var i = 0;
for(path of paths) {
i++;
$("#list_path").append('<a id="list-path-' + i + '" class="list-group-item tooltip-button"">' + "Path " + i + '</a>');
$("#list-path-" + i).click(function() { console.log(path) })
}
,都只显示最后一个list-group-item
元素。我想问题是只有path
的指针被分配给click函数,它在for循环的末尾总是指向最后一个path
。
如何设置点击功能以显示不同的path
?
感谢。
答案 0 :(得分:1)
你可以使用闭包
var i = 0;
for(path of paths) {
i++;
$("#list_path").append('<a id="list-path-' + i + '" class="list-group-item tooltip-button"">' + "Path " + i + '</a>');
$("#list-path-" + i).click((function(path) {
// return function wich has own variable path
return function () { console.log(path) };
})(path))
}
答案 1 :(得分:0)
你必须这样做
$("#list-path-" + i).click(function() { console.log($(this).text()); })
由于闭包,path是for循环的最后一个值。